Thank you Wifeagen! Your sponsorship is invaluable to the community! Prime, between you and TJ I was just giving Neovim a try. It was time to learn why sitting on trees looking through telescopes is so appealing... Now knowing 9 breaks backwards compatibility: I might as well try the lua config too. Thanks!
its EXTREMELY hard to keep backwards compat with a language that was designed to be a REPL to begin with. full language > REPL language and now they deal with that
it's absurd you didn't even bother to read the vim9 release notes but here you are now, bashing it. i guess rage-inducing videos/comments is what you're after as that's what youtube rewards
@@flagrantace9525 clearly you're someone who's never even given it a go. There's a vast suite of plugins for vim and neovim that make it at least as usable as vscode, if not more. I do use vscode (with vim keybindings), but for development work I often prefer neovim due to the lsp and autocompletion plugins and much less visual clutter.
Okay, so can we please have a guide to what would be a contemporary Neovim config. No old cruft, all the newest stuff. What does the killer config look like?
You could do worse than watching the chris@machine video series 'neovim from scratch', its the most complete breakdown of setting up a full lua config that I've found, and it's a great base to start from
@@techworld3043 he keeps the repository up to date as well, so it's fairly easy for less confident vimmers to deal with API changes since the videos were released
I think overall it’s a pretty sensible decision. Vim has always been Bram’s Project and he decided that it’s going to stay that way. It’s unfortunate that this will split the vim community even more, but at least now it’s easy to choose. People who like the community driven development and velocity will choose neovim and people who like brams version will choose vim. I think that’s fine. No more “which is better”, they’re just different editors now.
Keep in mind that neovim conveniently keeps merging patches from vim. Fixed bugs and improvements that are added to vim are being used by the neovim community all the time, and most of those changes happen in areas that actually make vim a great text editor. I think neovim's development team focus too much time adding IDE-like features instead of improving core features that have had longstanding issues in vim (vim's regex flavor is awkward to use, :vimgrep is slow, the internal pager is not very functional, just to give a few examples). Admittedly, it is easier to add more bells and whistles than refactoring or completely changing old features, but it is a shame that is the case.
@@rsmith31416 I'm not sure that it's a good idea to fix vim's regex, because it does some very specific things for vim. Plus you can always use \v to get "regular" regex working. It's not that bad. I've never used :vimgrep so I can't say, but I know a lot of IDE nvim frameworks use a grep solution that is actually pretty fast. Plus you can always just run native grep from the vim commandline.
@@nymusicman The reason core features will never be fixed is basically because it is too difficult, so neovim's team is happy to add more features around the edges. However, in an ideal world, the regex engine should be fixed. You can use `\v`, but that's merely a convenience function that it is useful if you don't want to escape too many special characters. It is not a replacement for a fully-featured regex engine. Yes, you can use the external grep in vim, but if you look at the output, since it is calling an external program, the output is noisy. It would be better to have a fast built-in vimgrep or at least, if you're going to call an external program, don't show the internal pager to the user. This has been a long-standing issue in the vim community for ages, but again, it is too difficult to fix without breaking backward-compatibility or introducing new bugs. This is why I had high hopes that Neovim would implement these features from scratch.
Agreed, weird choice to make. Also, as a user, I can motivate myself to learn Lua since it has the benefit of being used outside of vim as well. With vimscript, I never learned it and mostly copied things over since the syntax never made sense to me. Also thanks to the wife!
@@vorrnth8734 ??? it's open source, that's why forks exist. if they wanted control, perhaps a better use of time would've been to address the issuess behind why people felt those forks were necessary in the first place (vimscript being one of them)
I moved from vim to neovim for LSP. When I tried lua, it was just amazing. Specifically the trick where I could just create a hash table of properties and loop through them to set them, It's just so clean.
@@niles_5003 Oh yeah I know. We power users also never make n00b mistakes like off by 1, double free, we always initialize our variables, and certainly never make scoping mistakes. That's why Rust is such a stupid idea as a programming language, good programmers never make mistakes anyway. It's actually a feature to build landmines into your language as it weeds out all the people who shouldn't be programmers in the first place.
I don't really configure Vim other than setting various options. I'm not a professional developer so I don't feel like I need to, and I like simplicity. I'm trying Neovim because I like the defaults and the autoindentation is better. I also like how the configs are structured using the XDG config and data directories. I'm not sure I would install it if I had to build a system from scratch again. I tend to use custom distros with fairly minimal setups and configuration. If I can change a line in a default config, I will change a line in a default config. I use vim because I think it's simpler than emacs and I like ESC:w better then C-x C-s as I don't like pressing ctrl if I can help it. I can't be bothered to figure out how to enable evil mode since I'm lazy with my configs and I'm kinda stuck in my ways at this point. Vim is good enough. The emacs learning curve is also super intense. Basic Vim takes less than an hour using vimtutor. Vim also integrates with the system clipboard better. I had to install and learn a seperate package to use Neovim's clipboard functionality. That package _can_ be used with Vim, but it isn't mandatory. Hardcore users are going to be affected. Relatively normal users like me are going to be largely unaffected. Programming languages and other systems break backwards compatibility all the time. People who like Vim will adapt. People who don't like the change will migrate. It happened with Python 3, and look how that went. People learned the different syntax and moved on. People don't usually like jumping ship to other software ecosystems anyway. Neovim is a fork of Vim and doesn't include the Vim license as is specified as mandatory in the Vim license. Vim is charityware, and I like that Bram has that focus. You can support Vim if you want, but he requests that you support children in Uganda instead and even includes donation links, paypal addresses and relevant bank information to make it easy. This information is in the first section of the help docs.
Alright -- been coding HPC and graphics in vi and then vim for almost 30 years... have tons of customizations... but was shocked by Bram's passing and wondered about vim's future. Have played with sublime, VSCode, Emacs, and Atom --- always come back to vim. You've convinced me to give neovim a try. BTW - huge shoutout to your wife for letting you code and make videos in the same relative space!
Special thanks to your wife (and kid(s) ?) for sponsorhip each episode, as a entrepeneur with wife and 2 kids I know that these special extra times that lead us towards a better future.
Was super stoked on the decision for Lua, now I can re-purpose the learning of the language to awesome window manager, or one of the many cool open source Lua driven game engines.
Good short-take video. Chris@Machine has a good Lua video train that helped me bootstrap my personal config. But much of my approach has changed since then. I look forward to yours. My focus has been in the perception of startup speed. For example, I want the power of a note system - like Neorg - without paying the cost in time to first edit when I'm not focused on capturing a note - and Neorg has a high startup cost. So the techniques of loading only what you want - when you want it - is interesting to me. So I am currently refactoring my config with this focus in mind. I have been pulling ideas from a variety of configs all along but now think I'm almost to the point of seeing if I should split it off for others to peruse. When you do redo your Lua config videos, consider emphasizing why you are doing it this way instead of another way - I think the why a programmer used this technique instead of that technique is interesting and under represented in config videos tutorials.
Thanks. I had no idea this was going on, and I don't know how to feel about it. I just had to ditch Atom, I'm still trying to get used to Vim and now this.
Thanks Wifey.....found out about Primeagen on Front End Masters about a year ago and the content has been phenomenal. Thought I had subscribed since the videos always pop up in my RUclips feed, but I'm definitely subscribed now. Can't wait for the new series.
Yoooo mind blowing! You're the veteran on All thing Vim bro lol. Hands down! I go to no other channel but this on for Vim.. But man, the turn around for NeoVim lol, time to search your channel for some tips and migration techniques....I pray I don't break my .vimrc lol. Alsoooo Cheers to the wife my bro! My lady is my everything! Shout out to all the Queens out there making us men wiser and available for what we do!
While I use vim key bindings in most of the editors I use VSCode, Jetbrains Ide(s), etc... I really wish I knew (N)vim a lot better and knew how to take advantage of the Lua framework. I totally give you my vote to make a Udemy course or otherwise and the A..Z of Nvim. If I could break away from other editors and go with Nvim solely, that would be awesome.
@@choicesii1 I don't think you'll get the full nvim experience by doing so. You'll still be tied to a GUI application that may require mouse interaction sometimes and is not as customizable as nvim.
@@luissolanodev I don't find that to be the case. The gui is more like an alternative. I can have tabs opened and just swap by pressing ctrl+tab cycle, and ctrl+{num} switch panes, ctrl+p(type name) search file with filter or :buffers and :b{bufNum} like vim. I can do ctrl+` to access terminal and do a code {dir/path} and open a file or :e and it loads directory like vim. I can adjust the size of the terminal and use nvim when I need it for things like changing multiple files, which I find easier in nvim. But I get access to visual git graph, and mouse over git blame. And a split window with git diff. The gui for git branches in general I find to be more intuitive. Also debugging tools with gui by clicking before the number of a line to create a breakpoint is very intuitive. You literally can do everything in a terminal if you wanted but it looks more perty with vscode themes. There are a few limitations in : commands at times but it is very minimal. And as I said you can just open a terminal with ctrl+` and nvim a file in vscode.
@@choicesii1 I'm pretty sure you can do everything you mentioned with a couple nvim plugins, so “having the best of both worlds” may not be an accurate term and is kinda subjective in this case. If you prefer having a prettier UI that's ok, but still there's people who want the full keyboard based nvim experience.
I've only recently come to agree with this mentality on big changes, DIY is not always the best choice, especially when it comes to deciding whether to implement your own standards over adopting something new/different.
Currently I have a mixed config. Even though Lua is a good choice, there's one problem: Lua is much more verbose compared to Vimscript. `set nu` vs `vim.wo['nu']=true` one can be typed on the go, Therefore, as of now, simple parts of my config are in Vimscript, while the really complicated parts are reserved for Lua.
agreed, I mean, i would be against vimscript (years ago) ...but as long as we have it, why not use it? It has syntax highlighting, its made for vim. All primeagen arguments hold imho, i just dont see reason to rewrite your config to that less readable form. BUT when i write custom functionality, its lua ...then its binded to keys in vimscript, but there is this one readable general place where everything is glued together. Subjective opinion tho
I have it setup as ``` local set = vim.opt local let = vim.g local o = vim.o local bo = vim.bo local wo = vim.wo ``` At the top of the config and then it's just: ``` set.nu = true set.rnu = true ``` Still not as simple, but easy enough and just as readable
@@twb0109 I don't think that's more readable. If anything, you're adding another level of indirection. This is the problem with all language bindings (python, ruby), so it is not Lua's fault. However, I have to say I have never seen anything written in Lua that is not simpler and more readable in vimscript and with the official release vim9 script, scripting is so much better in vim. People forget that in some cases, domain-specific languages are better than general-purpose languages and something as niche as a text editor definitely benefits from a DSL.
What you don't understand is that the language binding is also shitty in (neo)vim. It'd be also an insane amount of work to do it properly. I wonder how long it takes for neovim to stop passing vim related execution as a string. The point of vim9script is to drop the language binding support and encourage the usage of channel API. With the legacy vimscript, it was even slow to handle the data from the external process. So this is the only way forward for vim. Now thanks to vim9script, my vim binary is linked with no other languages.
Finally one sensible comment. Yes, language bindings are terrible and add complexity with very minor benefits. I don't think it is possible to get rid of all the namespaces, in the same way such pattern has been the norm of every language binding in python, ruby or lua in vim. I don't know why everyone loves Lua in neovim now and no one seemed to care to have such interface in vim when both APIs are extremely similar. Lua is a great language, but I have never seen anything written in Lua that is more readable than the equivalent script in vimscript (and there is no comparison with the significant improvements that vim9 script brings to the table).
@@rsmith31416 vimscipt is a terrible language stop fooling yourself, you can see how many great plugins out there written for neovim thanks to lua. I know many people who tried to make a plugin for vim but gave up the idea after trying to wrap their head around vimscript
@@immer5680 Vimscript is certainly not a great language, but if you compare implementations of arbitrary functionality for neovim written in Lua vs vimscript, it is undeniable that even legacy vimscript is more readable than Lua. As I said in other comment, this is not Lua's fault by any stretch of the imagination. It is simply that the language bindings makes any language look like a mess (even setting a mapping is too complex). The same can be said of language bindings for python, ruby and lua itself in vim. Vim9 script is such a big improvement. I would be surprised if anyone needs more than a few hours to learn it and be productive with it.
@@immer5680 That's a simplified signature, but it is not good when that's one of the simplest tasks you can do in neovim. If you have to pass around tables, then it looks even worse.
Might be, but I still see Vim as the stable branch of Neovim basically. Once I have everything working fine, I don't need to touch it at all. So the real take here is, how difficult actually is to create plugins for lua vs vimscript? The main issue now is vim and neovim plugins may stop beign compatible with each other.
Oh wonderful Mrs Primeagen, you have blessed our lives. We are eternally grateful (this may or may not be read using the voice of Toy Story's little green aliens).
Recently I tried Neovim for the first time, and decided to do a lua config, 'cuz that's what all the cool kids were doing.... It was not a fun experience. After 2 days of trying to replicate my vimscript config, I gave up. It seems to me that you have to know some lua in order to set package-specific options (copying configs won't help if they don't use your particular package). And I really wanted to like Neovim! The other thing that killed it was the absence of a terminal buffer. I mean, Neovim does have a terminal, but not like Vim. It does not open in a split, and I never did find out how to get it to work properly. I always had to kill Neovim to get out of the terminal. I'll be sticking with Vim for the foreseeable future.
Of course you gotta know Lua to write Lua. Lua is pretty simple, you can learn it in a matter of days. Besides, that Neovim can use Vimscript too. I don't understand your problem with the terminal buffer. I can get a terminal in a split and use it pretty easily.
neovim terminal does seem fast ruclips.net/video/JWReY93Vl6g/видео.html do you mean faster than this, also ya lua config does feel tough to create though chris matis videos seems to help a bit, im thinking of checking some basic lua tuts and this one.
the terminal buffer is pretty simple to get out of once you know the secret set of keys to leave it. it does not behave like the rest of vim because C-c / Esc have meanings in the terminal so they chose a different set of terms to exit () I tried going full lua and I got everything done + more in about 3 hours, but i am familiar with lua and have some idea how it should work
@@user-he4ef9br7z Vimscript is simpler and more concise when configuring. As for the terminal, when I type :terminal, I get a prompt but can't navigate it. Don't know why that is. In any case, I'm sticking with Vim for now.
I’ve also been keeping my config mostly in VimScript, but have just used some lua for things that I wanted to use out of the box. Going all in on Neovim and lua config does seem to be the way to go if starting from scratch in 2022.
For those that just want to get started with Neovim/vim but are intimidated by all the configuration stuff, I'd recommend just going with VSCode with the neovim extension for now. With that choice, about the only config you'll need to figure out is how to remap to something sane like 'jk' or 'ii'. I say this as someone who is having a blast going 100% lua config in Neovim. But I'm on day 5 now, and that's with having LOTS of experience with Vim/Neovim setups. You just have to decide if you're the type that enjoys confronting config issues and conquering them. I do, and I definitely learn A LOT in the process. But that's not something you want to deal with when first starting out with neovim/vim.
Sadly, lua is a piece of shit compared to the JS. LuaJIT is also dead afaik. Maintainer just dropped it and make few fixes to new version that won't be released soon.
This is how I feel about Dockerfiles. The approach taken by buildah (without bud) is significantly better, because it uses a off-the-shelf solution: the shell that you like.
I disagree with your opinion that a specific DSL is “absolutely the wrong decision to make here.” The advantage of a DSL is that it can be written in a way that its host system (i.e. Vim here) can optimize it (special keywords, special semantics, etc. etc.), while that is just impossible with a dynamic, general-purpose language. In that sense, I think VimScript makes a lot of sense. My take on this is that I would rather go “native plugins” (i.e. use the same language as your host system; helix uses Rust plugin, etc.), or use a smart crafted DSL. As a Neovim contributor (core discussion, hop.nvim, some PRs into core), I know the advantage of using something like Lua. It lowers the entry bar for people to contribute. However, speaking completely from the technical point of view, I still think Lua was a mistake, as the language is really terrible, and Neovim still cannot provide “Neovim primitive” in that language. Yes, it can export functions and symbols under vim.api, but that’s still “plain Lua primitives.” On the other side, VimScript can have anything it likes, like “map”, ”xmap”, etc., and there is no “in-between translation.” As a friend recently said on Twitter: languages that try to solve one specific problem will always be smarter and better than general-purpose languages that try to solve that same problem.
Genuine question, doesn't that limit the number of people willing to contribute to the editor. Also doesn't that make it difficult to write Plugins / Scripts ? The best thing about something like VSCODE is that almost anyone who wants to contribute, CAN !
@@magmacodes9143 You are completely right and you are paraphrasing what I said (“It lowers the entry bar for people to contribute.”). However, it doesn’t change all the the other problems. Sometimes, having many people on a topic doesn’t make the situation any better (it makes it worse).
I hold down CTRL to jump whitespaces when im coding, with vim + tmux the macro changes to deleting everything under the cursor. In nvim it kept the macro the same for both. Along with custom color syntax; nvim auto matched it but vim didn't.
I noticed a massive performance increase after fully transitioning my nvim to lua. I never could have imagined moving back to vim. Now I wonder though, how might a similar vim9 config perform compared to my lua config?
still here for it. Moved my .vimrc over a year ago now. nvim and not looking back! (now to get nvim to be the default with distros) - "Thanks Mrs. Prime" ... "A"
I agree with the points made in the video, but a quick look at the nvim repo shows me it depends on vimscript, python AND lua. How is this not objectively worse than just vimscript?
vimscript for legacy terms (neovim supported everything up to vim9scirpt), python for building/scripts (nothing to do with neovim as a user, only dev) lua for actual configuration to me this isn't worse. I use py scripts for things all the time, but they are dev only things.
@@IvanGOrtolan That's not possible. The neovim team relies on merging patches from vim for bug fixes and improvements, which routinely require vimscript. On the other hand, vim9 script is really great. Much easier to read than vimscript and lua. It is not Lua's fault, though. Every language binding (python, ruby, lua in vim) has the same issue with the amount of namespaces that are exposed to the user.
I agree 100%. But I'd like to know your take on using "of the self" libraries versus building your own solutions for projects. I'm thinking about the dependency nightmare that it can be to use libraries that themselves depend on other libraries. How would you define a bool shouldBuildLibrary(int teamSize, int projectSize, array otherParameters)?
Do you know neovim is more popular? I would think vim still has a much larger userbase. I do think the ratio power/casual users is much higher with neovim. It does seem like the split that lua kind of started is now firmly confirmed and very likely keep growing, unfortunately. It seems like most new plugins will have to choose either vim or neovim, or use the 'ancient' way, for how much longer that will keep being supported. I kind of expect vim to not die and continue to have a sizeable community of plugin developers who stick with vim. I guess time will tell.
I generally agree except that the number of power users might actually be in favor of vim. Neovim is much more focused to cater to new developers and such users are more likely to install too many plugins to turn neovim into an IDE. At least in my experience, the real power users (people with many years of experience that know how to use vim very well) install very few plugins and tend to work with built-in features instead.
Is vim9script mostly an update to the existing code base or did they build a lot of new things from the ground up? If it is just a few changes to the existing vim script then it probably was less work than integrating a whole new language... Still got managed to be beaten by neovim in terms of features though xD
That is better said for Vim9. It has tones of features that literally noone even know they exist like vimball, GetLatestVimScripts (the latter is broken for sevral years and noone know and still no patches is sent for it)
I followed primes old config to get my neovim config started and then I added some of my personal preferences and everything works great and now I feel like going full lua is a waste of time but maybe im wrong
i want to go lua only in neovim, but i don't know how to config nvim with lua well enough. i.e. how to do the binds, the simple things like the relative line numbers etc., and plugin management - should i use different plugin manager etc. my config is 50% lua.
I still haven't used the new vimscript, don't care, doesn't matter, VimL has always been an awful language and I use it as little as possible (Lua, also, is not a good language, and no one can convince me otherwise). But Vim has had Python support since forever, and async support (making it actually good) since Vim 8. The wrapper still needs to be in VimL, but all the work can be done in Python. `find` sees 27 Python files in my Vim plugins directory, so it's also definitely in use IRL. I don't think nvim means the death of vim, but it's an interesting enough take that I just subscribed.
The entire tech industry is so obsessed with creating their own programming language, scripting language, frameworks and libraries. The number #1 thing that gives me a headache is that every single day there is a new framework being released, often creating their own scripting language syntax, claiming it solves a problem or helps with productivity. If nowadays I want to create a webapp and I decide to look up things, I am basically being told to use 20 different JS frameworks half of them trying to reinvent the scripting language itself requiring me to learn a new syntax, and on top of that, we now have code editors that start to create their own languages as well, all in the name of "speed and productivity". No no no no! NO!!! This is ridiculous. I don't want to keep learning new languages each time I take a toilet break. Seriously, the amount of people in the tech world who are obsessed with re-inventing the wheel for every single line of code they write, is ridiculous. I'm sticking with NeoVim and VSCode, and I'm only using extensions that I know I use almost on a daily basis. Programming wise, I stay away from bloatware. That means no nodeJS. If it can be written in PHP and runs stable and performs well, so be it. Front-end, no JS bloatware frameworks for something that can be written in vanilla JS within a reasonable amount of time. Always try and use vanilla JS first, otherwise look for the least bloatware framework possible. Hopefully soon I can start using Rust and WASM to replace a lot of the nonsense I've been dealing with.
That’s because Js front end is for soyboy zoomers, they can’t commit to one thing only and their attention span is shorter than the period with which a new js framework is released. This is a joke btw
I get what you are saying and I don't disagree. I would add that in the case of Javascript the reason that all of these web frameworks exist is that the language is fundamentally unfit for purpose. Something like React should have been implemented at the language level at least a decade ago if not more. Or a better language should have been made. Sadly our industry just doesn't think that way or really have good mechanisms for enabling that kind of thought process.
Nobody is forced to use vim9script even when switching to Vim version 9. Old Vim script is still default. Also I'm maybe one of the biggest Lua fans, I just love this language so much, and by Lua I mean pure PUC Lua, not LuaJIT or MoonScript. But I'm not ready for NeoVim, and probably never will be. Tested it, wasn't happy. I don't care that it uses my favourite language for scripting and config. I also don't know if I will use vim9script because plain old vimscript is simply enough for me. It does what I need and that's it.
I'm a great believer in only building the bits of your system unique to your domain. Everything else, go with something "standard" that you don't have to look after in addition to the commitment you've already made to your own code and customers.
Nvim for the win 🤩 I also want to start using lua for my Nvim config soon. Also, thank you Prime's wife for letting him share some of his thoughts with us degenerates on Twitch and YT 😄
You start with the wrong assumption by saying "it is a backward compatibility change". It is not incompatible. Vim9 is compatible with the older Vim script, you can mix Vim and Vim9, even in the same file where some functions can use Vim script and can call other Vim9 functions, which is quite an elegant transition from Vim to Vim9. My ~/.vimrc is mostly Vim script, but it now also has some Vim9 functions. Also, Lua is not better in my opinion. Lua is certainly a good and fast general scripting language (at least when using JIT, but unfortunately Lua JIT is stuck at Lua-5.1). However, in the case of Vim, having a specialized language is better, as it integrates better with Vim and looks more concise and familiar to Vim users. IMO, using Lua in Vim config for example looks frankly noisy and not so good. The video makes it as if LSP was only available in Neovim. That is not true. In Vim, there are several plugins that provide LSP whereas in Neovim it is builtin, but both can do LSP. Regarding Tree-Sitter, it is admittedly only available in Neovim as far as I know. My concern though is that Vim and Neovim tend to diverge and that can do harm. I'm hoping Neovim can support Vim9 in the future, but it's not clear whether it will be the case. Vim is the original editor, so Neovim should ideally stay mostly compatible if possible.
This seems like a reasonable take. From the benchmarks I've looked at, LUA (and esspecially LuaJIT) can be insanely fast compared to other similar languages.
Thank you Wifeagen! Your sponsorship is invaluable to the community!
Prime, between you and TJ I was just giving Neovim a try. It was time to learn why sitting on trees looking through telescopes is so appealing... Now knowing 9 breaks backwards compatibility: I might as well try the lua config too. Thanks!
Well, they promised it would not break backwards compat and would want to avoid something similar to the python2.7-thingy back then...
its EXTREMELY hard to keep backwards compat with a language that was designed to be a REPL to begin with.
full language > REPL language and now they deal with that
"Wifeagen" 🤣
it's absurd you didn't even bother to read the vim9 release notes but here you are now, bashing it.
i guess rage-inducing videos/comments is what you're after as that's what youtube rewards
@@flagrantace9525 clearly you're someone who's never even given it a go. There's a vast suite of plugins for vim and neovim that make it at least as usable as vscode, if not more. I do use vscode (with vim keybindings), but for development work I often prefer neovim due to the lsp and autocompletion plugins and much less visual clutter.
Okay, so can we please have a guide to what would be a contemporary Neovim config. No old cruft, all the newest stuff. What does the killer config look like?
You could do worse than watching the chris@machine video series 'neovim from scratch', its the most complete breakdown of setting up a full lua config that I've found, and it's a great base to start from
@@nodidog yesterday i was thinking watching him.
@@techworld3043 he keeps the repository up to date as well, so it's fairly easy for less confident vimmers to deal with API changes since the videos were released
I second Simon's words, but would like to add if u wanna save a little time you could check out Lunarvim
Summer 2022 full lua config, hit us PLEASE
I think overall it’s a pretty sensible decision. Vim has always been Bram’s Project and he decided that it’s going to stay that way.
It’s unfortunate that this will split the vim community even more, but at least now it’s easy to choose. People who like the community driven development and velocity will choose neovim and people who like brams version will choose vim. I think that’s fine. No more “which is better”, they’re just different editors now.
This is probably the most reasonable take. They're just different now
Keep in mind that neovim conveniently keeps merging patches from vim. Fixed bugs and improvements that are added to vim are being used by the neovim community all the time, and most of those changes happen in areas that actually make vim a great text editor.
I think neovim's development team focus too much time adding IDE-like features instead of improving core features that have had longstanding issues in vim (vim's regex flavor is awkward to use, :vimgrep is slow, the internal pager is not very functional, just to give a few examples). Admittedly, it is easier to add more bells and whistles than refactoring or completely changing old features, but it is a shame that is the case.
@@rsmith31416 I'm not sure that it's a good idea to fix vim's regex, because it does some very specific things for vim. Plus you can always use \v to get "regular" regex working. It's not that bad. I've never used :vimgrep so I can't say, but I know a lot of IDE nvim frameworks use a grep solution that is actually pretty fast. Plus you can always just run native grep from the vim commandline.
@@nymusicman The reason core features will never be fixed is basically because it is too difficult, so neovim's team is happy to add more features around the edges. However, in an ideal world, the regex engine should be fixed.
You can use `\v`, but that's merely a convenience function that it is useful if you don't want to escape too many special characters. It is not a replacement for a fully-featured regex engine.
Yes, you can use the external grep in vim, but if you look at the output, since it is calling an external program, the output is noisy. It would be better to have a fast built-in vimgrep or at least, if you're going to call an external program, don't show the internal pager to the user. This has been a long-standing issue in the vim community for ages, but again, it is too difficult to fix without breaking backward-compatibility or introducing new bugs. This is why I had high hopes that Neovim would implement these features from scratch.
@@ThePrimeagen Yup. And the difference is: One of 'em SUCKS!!!1!
;-)
Agreed, weird choice to make. Also, as a user, I can motivate myself to learn Lua since it has the benefit of being used outside of vim as well. With vimscript, I never learned it and mostly copied things over since the syntax never made sense to me.
Also thanks to the wife!
hah! same, literally the same.
I don't want to spend time learning a language that doesn't exist.
@@ThePrimeagen so true, i had the same feeling while using it
Actually it is a pretty obvious choice. You cannot be dictator if you share control.
I write all of my RUclips comments in Esperanto.
@@vorrnth8734 ??? it's open source, that's why forks exist. if they wanted control, perhaps a better use of time would've been to address the issuess behind why people felt those forks were necessary in the first place (vimscript being one of them)
Thanks prime's wife for allowing him to reach his final form 🙏
goat
looking forward to a full nvim config series! totally agree on this one
Blazingly fast comment !!!
😂😂😂😂
Blaaaazingly fast 🔥 🔥 🔥
It's super laggy and takes 45 seconds to load now
I moved from vim to neovim for LSP. When I tried lua, it was just amazing. Specifically the trick where I could just create a hash table of properties and loop through them to set them, It's just so clean.
its just a simple language with few things to help or hurt you :)
@@ThePrimeagen The whole, variables are global by default I think is a god awful and dangerous default though.
@@entelin Absolutely. I find some of Lua's choices bizarre.
@@entelin Maybe so, but Lua power users never use global variables.
@@niles_5003 Oh yeah I know. We power users also never make n00b mistakes like off by 1, double free, we always initialize our variables, and certainly never make scoping mistakes. That's why Rust is such a stupid idea as a programming language, good programmers never make mistakes anyway. It's actually a feature to build landmines into your language as it weeds out all the people who shouldn't be programmers in the first place.
Thanks, Mrs. ThePrimeagen. I hope to see more videos here. It's hard to catch the live stream but love VODs. Keep it up!
Thank you Prime's wife for allowing us to have such delightful experience and joy with your husband!
she says welcome
I don't really configure Vim other than setting various options. I'm not a professional developer so I don't feel like I need to, and I like simplicity. I'm trying Neovim because I like the defaults and the autoindentation is better. I also like how the configs are structured using the XDG config and data directories. I'm not sure I would install it if I had to build a system from scratch again. I tend to use custom distros with fairly minimal setups and configuration. If I can change a line in a default config, I will change a line in a default config.
I use vim because I think it's simpler than emacs and I like ESC:w better then C-x C-s as I don't like pressing ctrl if I can help it. I can't be bothered to figure out how to enable evil mode since I'm lazy with my configs and I'm kinda stuck in my ways at this point. Vim is good enough. The emacs learning curve is also super intense. Basic Vim takes less than an hour using vimtutor.
Vim also integrates with the system clipboard better. I had to install and learn a seperate package to use Neovim's clipboard functionality. That package _can_ be used with Vim, but it isn't mandatory.
Hardcore users are going to be affected. Relatively normal users like me are going to be largely unaffected.
Programming languages and other systems break backwards compatibility all the time. People who like Vim will adapt. People who don't like the change will migrate. It happened with Python 3, and look how that went. People learned the different syntax and moved on. People don't usually like jumping ship to other software ecosystems anyway.
Neovim is a fork of Vim and doesn't include the Vim license as is specified as mandatory in the Vim license. Vim is charityware, and I like that Bram has that focus. You can support Vim if you want, but he requests that you support children in Uganda instead and even includes donation links, paypal addresses and relevant bank information to make it easy. This information is in the first section of the help docs.
You forever have my gratitude, Mrs. Prime
Alright -- been coding HPC and graphics in vi and then vim for almost 30 years... have tons of customizations... but was shocked by Bram's passing and wondered about vim's future. Have played with sublime, VSCode, Emacs, and Atom --- always come back to vim. You've convinced me to give neovim a try. BTW - huge shoutout to your wife for letting you code and make videos in the same relative space!
Special thanks to your wife (and kid(s) ?) for sponsorhip each episode, as a entrepeneur with wife and 2 kids I know that these special extra times that lead us towards a better future.
One aspect of why I like Lua being used in Neovim, is that I can use Lua in other tools like - Hammerspoon, WezTerm, etc
Was super stoked on the decision for Lua, now I can re-purpose the learning of the language to awesome window manager, or one of the many cool open source Lua driven game engines.
The "New vim series coming soon" news felt like christmas
absolutely!
Good short-take video.
Chris@Machine has a good Lua video train that helped me bootstrap my personal config. But much of my approach has changed since then. I look forward to yours.
My focus has been in the perception of startup speed. For example, I want the power of a note system - like Neorg - without paying the cost in time to first edit when I'm not focused on capturing a note - and Neorg has a high startup cost.
So the techniques of loading only what you want - when you want it - is interesting to me. So I am currently refactoring my config with this focus in mind.
I have been pulling ideas from a variety of configs all along but now think I'm almost to the point of seeing if I should split it off for others to peruse.
When you do redo your Lua config videos, consider emphasizing why you are doing it this way instead of another way - I think the why a programmer used this technique instead of that technique is interesting and under represented in config videos tutorials.
Thanks. I had no idea this was going on, and I don't know how to feel about it. I just had to ditch Atom, I'm still trying to get used to Vim and now this.
it hurts.
Thanks Wifey.....found out about Primeagen on Front End Masters about a year ago and the content has been phenomenal. Thought I had subscribed since the videos always pop up in my RUclips feed, but I'm definitely subscribed now. Can't wait for the new series.
Thank you Mrs Primeagen for sponsoring these videos.
Yoooo mind blowing! You're the veteran on All thing Vim bro lol. Hands down! I go to no other channel but this on for Vim.. But man, the turn around for NeoVim lol, time to search your channel for some tips and migration techniques....I pray I don't break my .vimrc lol.
Alsoooo Cheers to the wife my bro! My lady is my everything! Shout out to all the Queens out there making us men wiser and available for what we do!
Agreed. Just use one of the many available options.
I’d love to see WASM take hold. Much safer getting scripts from the net when they’re sandboxed!
While I use vim key bindings in most of the editors I use VSCode, Jetbrains Ide(s), etc... I really wish I knew (N)vim a lot better and knew how to take advantage of the Lua framework. I totally give you my vote to make a Udemy course or otherwise and the A..Z of Nvim. If I could break away from other editors and go with Nvim solely, that would be awesome.
Of course I didn't trust the title, c'mon… who thinks ThePrime is gonna leave this fabulous text editor..? No way
i mean, i am definitely leaving vim. neovim 100% :)
You know.... vscode with nvim extension is the best of both worlds.
@@choicesii1 I don't think you'll get the full nvim experience by doing so. You'll still be tied to a GUI application that may require mouse interaction sometimes and is not as customizable as nvim.
@@luissolanodev I don't find that to be the case. The gui is more like an alternative. I can have tabs opened and just swap by pressing ctrl+tab cycle, and ctrl+{num} switch panes, ctrl+p(type name) search file with filter or :buffers and :b{bufNum} like vim. I can do ctrl+` to access terminal and do a code {dir/path} and open a file or :e and it loads directory like vim. I can adjust the size of the terminal and use nvim when I need it for things like changing multiple files, which I find easier in nvim. But I get access to visual git graph, and mouse over git blame. And a split window with git diff. The gui for git branches in general I find to be more intuitive. Also debugging tools with gui by clicking before the number of a line to create a breakpoint is very intuitive. You literally can do everything in a terminal if you wanted but it looks more perty with vscode themes. There are a few limitations in : commands at times but it is very minimal. And as I said you can just open a terminal with ctrl+` and nvim a file in vscode.
@@choicesii1 I'm pretty sure you can do everything you mentioned with a couple nvim plugins, so “having the best of both worlds” may not be an accurate term and is kinda subjective in this case. If you prefer having a prettier UI that's ok, but still there's people who want the full keyboard based nvim experience.
I've only recently come to agree with this mentality on big changes, DIY is not always the best choice, especially when it comes to deciding whether to implement your own standards over adopting something new/different.
My wife thanks your wife for letting the boys have a laugh together. Keep up the solid work!
Thank you thank you
Currently I have a mixed config. Even though Lua is a good choice, there's one problem: Lua is much more verbose compared to Vimscript.
`set nu` vs `vim.wo['nu']=true`
one can be typed on the go,
Therefore, as of now, simple parts of my config are in Vimscript, while the really complicated parts are reserved for Lua.
agreed, I mean, i would be against vimscript (years ago) ...but as long as we have it, why not use it? It has syntax highlighting, its made for vim. All primeagen arguments hold imho, i just dont see reason to rewrite your config to that less readable form. BUT when i write custom functionality, its lua ...then its binded to keys in vimscript, but there is this one readable general place where everything is glued together. Subjective opinion tho
i was pretty much this for the last 1.5 years.
i decided to finally make the jump.
I have it setup as
```
local set = vim.opt
local let = vim.g
local o = vim.o
local bo = vim.bo
local wo = vim.wo
```
At the top of the config and then it's just:
```
set.nu = true
set.rnu = true
```
Still not as simple, but easy enough and just as readable
@@twb0109 I don't think that's more readable. If anything, you're adding another level of indirection. This is the problem with all language bindings (python, ruby), so it is not Lua's fault. However, I have to say I have never seen anything written in Lua that is not simpler and more readable in vimscript and with the official release vim9 script, scripting is so much better in vim. People forget that in some cases, domain-specific languages are better than general-purpose languages and something as niche as a text editor definitely benefits from a DSL.
@@twb0109 `set nu` is `vim.opt.nu = true`.
`vim.wo['nu']=true` doesn't even do the same as your vim command.
What you don't understand is that the language binding is also shitty in (neo)vim. It'd be also an insane amount of work to do it properly. I wonder how long it takes for neovim to stop passing vim related execution as a string. The point of vim9script is to drop the language binding support and encourage the usage of channel API. With the legacy vimscript, it was even slow to handle the data from the external process. So this is the only way forward for vim. Now thanks to vim9script, my vim binary is linked with no other languages.
Finally one sensible comment. Yes, language bindings are terrible and add complexity with very minor benefits. I don't think it is possible to get rid of all the namespaces, in the same way such pattern has been the norm of every language binding in python, ruby or lua in vim. I don't know why everyone loves Lua in neovim now and no one seemed to care to have such interface in vim when both APIs are extremely similar. Lua is a great language, but I have never seen anything written in Lua that is more readable than the equivalent script in vimscript (and there is no comparison with the significant improvements that vim9 script brings to the table).
@@rsmith31416 vimscipt is a terrible language stop fooling yourself, you can see how many great plugins out there written for neovim thanks to lua. I know many people who tried to make a plugin for vim but gave up the idea after trying to wrap their head around vimscript
@@immer5680 Vimscript is certainly not a great language, but if you compare implementations of arbitrary functionality for neovim written in Lua vs vimscript, it is undeniable that even legacy vimscript is more readable than Lua. As I said in other comment, this is not Lua's fault by any stretch of the imagination. It is simply that the language bindings makes any language look like a mess (even setting a mapping is too complex). The same can be said of language bindings for python, ruby and lua itself in vim.
Vim9 script is such a big improvement. I would be surprised if anyone needs more than a few hours to learn it and be productive with it.
@@rsmith31416 vim.keymap.set('', '', '', opts...) it's not that complex.
Less elegant than vim, but still not a deal breaker
@@immer5680 That's a simplified signature, but it is not good when that's one of the simplest tasks you can do in neovim. If you have to pass around tables, then it looks even worse.
Dude I thought you were switching to emacs or something. Long live Neovim!
Might be, but I still see Vim as the stable branch of Neovim basically. Once I have everything working fine, I don't need to touch it at all. So the real take here is, how difficult actually is to create plugins for lua vs vimscript? The main issue now is vim and neovim plugins may stop beign compatible with each other.
I’m just happy that I know how to use plain vi and integrate properly with the shell, no vim/neovim dependency at all
Yeah, when I have to use server stuff, I just use that. That's why I never change the default of vim motions.
thank you mrs.ThePrimeagen.. entire community bows to you 🙇♂🙇♂🙇♂🙇♂🙇♂
Oh wonderful Mrs Primeagen, you have blessed our lives. We are eternally grateful (this may or may not be read using the voice of Toy Story's little green aliens).
fun fact: not every single article of software ever produced needs an update
Thank you, Mrs. Primeagen.
Recently I tried Neovim for the first time, and decided to do a lua config, 'cuz that's what all the cool kids were doing.... It was not a fun experience. After 2 days of trying to replicate my vimscript config, I gave up. It seems to me that you have to know some lua in order to set package-specific options (copying configs won't help if they don't use your particular package). And I really wanted to like Neovim! The other thing that killed it was the absence of a terminal buffer. I mean, Neovim does have a terminal, but not like Vim. It does not open in a split, and I never did find out how to get it to work properly. I always had to kill Neovim to get out of the terminal. I'll be sticking with Vim for the foreseeable future.
Of course you gotta know Lua to write Lua. Lua is pretty simple, you can learn it in a matter of days. Besides, that Neovim can use Vimscript too. I don't understand your problem with the terminal buffer. I can get a terminal in a split and use it pretty easily.
neovim terminal does seem fast ruclips.net/video/JWReY93Vl6g/видео.html do you mean faster than this, also ya lua config does feel tough to create though chris matis videos seems to help a bit, im thinking of checking some basic lua tuts and this one.
the terminal buffer is pretty simple to get out of once you know the secret set of keys to leave it. it does not behave like the rest of vim because C-c / Esc have meanings in the terminal so they chose a different set of terms to exit ()
I tried going full lua and I got everything done + more in about 3 hours, but i am familiar with lua and have some idea how it should work
@@user-he4ef9br7z Vimscript is simpler and more concise when configuring. As for the terminal, when I type :terminal, I get a prompt but can't navigate it. Don't know why that is. In any case, I'm sticking with Vim for now.
@@ThePrimeagen Thanks for the clarification! Maybe I'll revisit when I am more familiar with the language.
I’ve also been keeping my config mostly in VimScript, but have just used some lua for things that I wanted to use out of the box. Going all in on Neovim and lua config does seem to be the way to go if starting from scratch in 2022.
that is what i did about 2 weeks ago and that is why i am redoing my vim series.
Thanks Ms.Primeagen for allowing us to enjoy Mr.Primeagen. XD
Thank you Wifeagen for keeping ThePrimeagen in NORMAL mode ✌️
I've been holding back on going full lua because I'm too lazy to properly learn it xd
I was thinking about doing the jump.
Can't wait for your neovim series, first one should be how to do that jump smoothly
For those that just want to get started with Neovim/vim but are intimidated by all the configuration stuff, I'd recommend just going with VSCode with the neovim extension for now. With that choice, about the only config you'll need to figure out is how to remap to something sane like 'jk' or 'ii'. I say this as someone who is having a blast going 100% lua config in Neovim. But I'm on day 5 now, and that's with having LOTS of experience with Vim/Neovim setups. You just have to decide if you're the type that enjoys confronting config issues and conquering them. I do, and I definitely learn A LOT in the process. But that's not something you want to deal with when first starting out with neovim/vim.
there is also astronvim which I think its just very good beginner defaults for neovim
He actually considers Rust to be his wife. So thank you Rust!
Reminds me of ... IBM Domino/Lotus server.😕 Why layer crap like that? Where did minimalism go?
As you said, lua has a great LSP and tooling around the language which makes it 69x more appealing than vimscript.
hands down!
Which LSP and tooling do you use?
Sadly, lua is a piece of shit compared to the JS. LuaJIT is also dead afaik. Maintainer just dropped it and make few fixes to new version that won't be released soon.
Thankyou Mrs Prime!
Rants keep me sane 🙂
Thanks to you and your wife for this. Can't wait for the neovim series
This is how I feel about Dockerfiles. The approach taken by buildah (without bud) is significantly better, because it uses a off-the-shelf solution: the shell that you like.
I disagree with your opinion that a specific DSL is “absolutely the wrong decision to make here.” The advantage of a DSL is that it can be written in a way that its host system (i.e. Vim here) can optimize it (special keywords, special semantics, etc. etc.), while that is just impossible with a dynamic, general-purpose language. In that sense, I think VimScript makes a lot of sense. My take on this is that I would rather go “native plugins” (i.e. use the same language as your host system; helix uses Rust plugin, etc.), or use a smart crafted DSL.
As a Neovim contributor (core discussion, hop.nvim, some PRs into core), I know the advantage of using something like Lua. It lowers the entry bar for people to contribute. However, speaking completely from the technical point of view, I still think Lua was a mistake, as the language is really terrible, and Neovim still cannot provide “Neovim primitive” in that language. Yes, it can export functions and symbols under vim.api, but that’s still “plain Lua primitives.” On the other side, VimScript can have anything it likes, like “map”, ”xmap”, etc., and there is no “in-between translation.”
As a friend recently said on Twitter: languages that try to solve one specific problem will always be smarter and better than general-purpose languages that try to solve that same problem.
Genuine question, doesn't that limit the number of people willing to contribute to the editor. Also doesn't that make it difficult to write Plugins / Scripts ?
The best thing about something like VSCODE is that almost anyone who wants to contribute, CAN !
@@magmacodes9143 You are completely right and you are paraphrasing what I said (“It lowers the entry bar for people to contribute.”). However, it doesn’t change all the the other problems. Sometimes, having many people on a topic doesn’t make the situation any better (it makes it worse).
I hold down CTRL to jump whitespaces when im coding, with vim + tmux the macro changes to deleting everything under the cursor. In nvim it kept the macro the same for both.
Along with custom color syntax; nvim auto matched it but vim didn't.
I noticed a massive performance increase after fully transitioning my nvim to lua. I never could have imagined moving back to vim. Now I wonder though, how might a similar vim9 config perform compared to my lua config?
So at last vim conf would be called neovim conf, right? :)
i have literally discussed this.
Great video, I’m waiting for new Neovim tutorials, videos and so on 👾
yayayaya!
Wow. Metaphorically speechless. On today of all days. This country is going down the sh!tter!
Ty wifeagen.
THE WHOLE DANG THING
Thank you, Mrs. Primeagen!
I'll definitely check out Lua! I now have Neovim installed on my Windows and Mac. 😈
lua's great, probably one of my favorite languages, especially interpreted. The only thing I dislike is the convention of arrays starting at index 1
yeah, 1 based is not based
An additional ty to the wife for letting you scream in the dungeon.
still here for it. Moved my .vimrc over a year ago now. nvim and not looking back! (now to get nvim to be the default with distros) - "Thanks Mrs. Prime" ... "A"
Thank you Mrs. Primeagen!
I agree with the points made in the video, but a quick look at the nvim repo shows me it depends on vimscript, python AND lua.
How is this not objectively worse than just vimscript?
vimscript for legacy terms (neovim supported everything up to vim9scirpt),
python for building/scripts (nothing to do with neovim as a user, only dev)
lua for actual configuration
to me this isn't worse. I use py scripts for things all the time, but they are dev only things.
@@ThePrimeagen I guess vim9scripts brings a positive thing, everybody switches to lua and nvim and then nvim can drop support for vim script :)
@@IvanGOrtolan That's not possible. The neovim team relies on merging patches from vim for bug fixes and improvements, which routinely require vimscript. On the other hand, vim9 script is really great. Much easier to read than vimscript and lua. It is not Lua's fault, though. Every language binding (python, ruby, lua in vim) has the same issue with the amount of namespaces that are exposed to the user.
Thank you Mrs ThePrimeagen 🥰
Can we get an update on this? thanks to you I started using neovim and left Vscode.
I agree 100%. But I'd like to know your take on using "of the self" libraries versus building your own solutions for projects. I'm thinking about the dependency nightmare that it can be to use libraries that themselves depend on other libraries. How would you define a bool shouldBuildLibrary(int teamSize, int projectSize, array otherParameters)?
Nice work on landing that sponsorship, probably the hardest one of all to get
I am looking at Helix. A text editor that is similar to Vim, and is created in Rust.
There is 70% chance that creator of that is trans then
@@mba2808 XD
Thank u to miss Prime 🙏
Do you know neovim is more popular? I would think vim still has a much larger userbase. I do think the ratio power/casual users is much higher with neovim. It does seem like the split that lua kind of started is now firmly confirmed and very likely keep growing, unfortunately. It seems like most new plugins will have to choose either vim or neovim, or use the 'ancient' way, for how much longer that will keep being supported.
I kind of expect vim to not die and continue to have a sizeable community of plugin developers who stick with vim. I guess time will tell.
I generally agree except that the number of power users might actually be in favor of vim. Neovim is much more focused to cater to new developers and such users are more likely to install too many plugins to turn neovim into an IDE. At least in my experience, the real power users (people with many years of experience that know how to use vim very well) install very few plugins and tend to work with built-in features instead.
I agree with your opinion!
Last night, I made my Emacs change directory to any github repository files, do ls, cat, open file, etc, treating it like a file system.
Is vim9script mostly an update to the existing code base or did they build a lot of new things from the ground up? If it is just a few changes to the existing vim script then it probably was less work than integrating a whole new language...
Still got managed to be beaten by neovim in terms of features though xD
If you want a bloated and buggy vim, use neovim.
That is better said for Vim9. It has tones of features that literally noone even know they exist like vimball, GetLatestVimScripts (the latter is broken for sevral years and noone know and still no patches is sent for it)
Thank you, Primeagen's wife!
New neovim series coming soon!! Thank you very much to ThePrimeagen’s beautiful wife!!
yayayaya!
I followed primes old config to get my neovim config started and then I added some of my personal preferences and everything works great and now I feel like going full lua is a waste of time but maybe im wrong
herm? i just went full lua!
i want to go lua only in neovim, but i don't know how to config nvim with lua well enough. i.e. how to do the binds, the simple things like the relative line numbers etc., and plugin management - should i use different plugin manager etc. my config is 50% lua.
I still haven't used the new vimscript, don't care, doesn't matter, VimL has always been an awful language and I use it as little as possible (Lua, also, is not a good language, and no one can convince me otherwise). But Vim has had Python support since forever, and async support (making it actually good) since Vim 8. The wrapper still needs to be in VimL, but all the work can be done in Python. `find` sees 27 Python files in my Vim plugins directory, so it's also definitely in use IRL. I don't think nvim means the death of vim, but it's an interesting enough take that I just subscribed.
The entire tech industry is so obsessed with creating their own programming language, scripting language, frameworks and libraries. The number #1 thing that gives me a headache is that every single day there is a new framework being released, often creating their own scripting language syntax, claiming it solves a problem or helps with productivity. If nowadays I want to create a webapp and I decide to look up things, I am basically being told to use 20 different JS frameworks half of them trying to reinvent the scripting language itself requiring me to learn a new syntax, and on top of that, we now have code editors that start to create their own languages as well, all in the name of "speed and productivity". No no no no! NO!!! This is ridiculous. I don't want to keep learning new languages each time I take a toilet break. Seriously, the amount of people in the tech world who are obsessed with re-inventing the wheel for every single line of code they write, is ridiculous. I'm sticking with NeoVim and VSCode, and I'm only using extensions that I know I use almost on a daily basis. Programming wise, I stay away from bloatware. That means no nodeJS. If it can be written in PHP and runs stable and performs well, so be it. Front-end, no JS bloatware frameworks for something that can be written in vanilla JS within a reasonable amount of time. Always try and use vanilla JS first, otherwise look for the least bloatware framework possible. Hopefully soon I can start using Rust and WASM to replace a lot of the nonsense I've been dealing with.
Couldn't agree more.
That’s because Js front end is for soyboy zoomers, they can’t commit to one thing only and their attention span is shorter than the period with which a new js framework is released.
This is a joke btw
i am right there with you. i think collectively people are getting really sick of this shit.
I get what you are saying and I don't disagree. I would add that in the case of Javascript the reason that all of these web frameworks exist is that the language is fundamentally unfit for purpose. Something like React should have been implemented at the language level at least a decade ago if not more. Or a better language should have been made. Sadly our industry just doesn't think that way or really have good mechanisms for enabling that kind of thought process.
"i hate new languages. let me replace everything with a new language called rust" lol
I agree. When I heard about what’s in Vim 9, I seriously started taking a much closer look at NeoVim.
great move
excited for new vim series
"This is treason then"
Nobody is forced to use vim9script even when switching to Vim version 9. Old Vim script is still default. Also I'm maybe one of the biggest Lua fans, I just love this language so much, and by Lua I mean pure PUC Lua, not LuaJIT or MoonScript. But I'm not ready for NeoVim, and probably never will be. Tested it, wasn't happy. I don't care that it uses my favourite language for scripting and config. I also don't know if I will use vim9script because plain old vimscript is simply enough for me. It does what I need and that's it.
Thanks you very much Prime wife!
what's the name of the guy in 2:26
*now* can we get neovim into official repos for distros?
Thank you Mrs Primeagen
Thank you, ThePrimeagen's wife.
she says you are welcome
I'm a great believer in only building the bits of your system unique to your domain.
Everything else, go with something "standard" that you don't have to look after in addition to the commitment you've already made to your own code and customers.
New vim series? HYPE
Can you create a through insight for neovim for windows?
Well, I hope you do a nice configuration guide for neovim for clueless users like me.
i have one already recorded, slated here shortly
1:09 Did he just say "follow eMacs" ?
/me grabs torch
do anything but write vim9script
Nvim for the win 🤩
I also want to start using lua for my Nvim config soon.
Also, thank you Prime's wife for letting him share some of his thoughts with us degenerates on Twitch and YT 😄
You start with the wrong assumption by saying "it is a backward compatibility change". It is not incompatible. Vim9 is compatible with the older Vim script, you can mix Vim and Vim9, even in the same file where some functions can use Vim script and can call other Vim9 functions, which is quite an elegant transition from Vim to Vim9. My ~/.vimrc is mostly Vim script, but it now also has some Vim9 functions.
Also, Lua is not better in my opinion. Lua is certainly a good and fast general scripting language (at least when using JIT, but unfortunately Lua JIT is stuck at Lua-5.1). However, in the case of Vim, having a specialized language is better, as it integrates better with Vim and looks more concise and familiar to Vim users. IMO, using Lua in Vim config for example looks frankly noisy and not so good.
The video makes it as if LSP was only available in Neovim. That is not true. In Vim, there are several plugins that provide LSP whereas in Neovim it is builtin, but both can do LSP. Regarding Tree-Sitter, it is admittedly only available in Neovim as far as I know.
My concern though is that Vim and Neovim tend to diverge and that can do harm. I'm hoping Neovim can support Vim9 in the future, but it's not clear whether it will be the case. Vim is the original editor, so Neovim should ideally stay mostly compatible if possible.
I hope that the rebranding explanation given to neovimconf is honest, because I am basing my pivot to neovim out of it
Have you tried out Urbit?
Non-clickbait title: I won’t be using vim 9
He won't be using vim 8 either! He will be using Neovim.
Not really clickbait. The title represents what he said.
thank you prime wife haha, we love your effort!
This seems like a reasonable take. From the benchmarks I've looked at, LUA (and esspecially LuaJIT) can be insanely fast compared to other similar languages.
Jesus! I can't catch him on the normal speed, but on 0.75 he became so lovely stoner!
WAH?
New vimscript? Sounds like a bad idea. A little off-topic: Is there a keyboard shortcut for that "wife thing"? 🤔
yeah, its an emacs shortcut, cannot remember
@@ThePrimeagen DOOM emacs?