post.txt For version 2025.1 Last change: 2025 Jan

Vimscript isn’t bad. You are just dumb.

I want to talk about folks complaining without knowing anything. The topic for today will be vimscript / vimL and particularly vim9script.

There has been a lot of stupidity around vimscript lately and I wanted to just share one that triggered this post.

He is right that vimscript (pre vim8 / right around the nvim fork) was not in a great place. At the time Bram was not working full-time on Vim but was clear about his goals and direction for the language for vim8 and beyond. If you haven’t read the plans for vim8/9 my last post covered the vision that Bram had for the language and addressing the legitimate concerns with the state of the language and modernizing it for a new generation of developers.

Unfortunately the nvim wave was already in full-swing and it became vogue to bash vim users while claiming LUA was the future of plugin writing. Nvim folks have been living in their bubble without much consideration for where Bram left the original project that started this all. Rather than having constructive conversations on the future of vim/nvim we have decided that the split is too far gone; vim9 features never made it into nvim and many never will.

The desire to dunk on classic vim users and continue the lie that vimscript is terrible is just lame. I’d be surprisded if the folks who are bashing vimscript have written compliant vim9script, used vim8-popups, or any features introduced nearly 10 years ago in vim 8.0 (async, jobs, lambdas)

As someone who’s written vimscript for 10+ years I’d like to think I am far more qualified to have this conversation then the tech influencer community who starts to shake when they see a:args.. people love dunking on variable scoping in vim but don’t know vim9 got rid of all that. When you are writing plugin code there is an expectation that you have to understand quite a bit of the underworkings to effectively make things happen. Vimscript is not python or javascript where you use whatever library will magically solve your problem with a clean DSL; it is a specific language for a very specific purpose and it does it well.

vim vimscript viml vim9script
× Expanded image
Click anywhere or press ESC to close