Been using some sort of vi for 20-some years now and I’m still not convinced. I suspect it’s got something to do with my configuration. I’ll need to tinker a bit. I think I’ll give it another 20 years then I’ll let you know.
Keep us in the loop 🤠
I had to SSH into a server for dev work at a previous job. And vim was the obvious best answer for “IDE like” experience in a terminal. I needed more power than nano.
And then vim stalled in development. Neovim was created in response to that, and it had new shiny features (many of which vim also has now), that caught my eye (async tasks were added to neovim before vim).
So I was a vim user out of necessity and I switched to neovim to chase new shiny things, and have found 0 reason to go back.
Ever since I learned about Vim it was something I wanted to learn but always feared the adjustment period and unwarranted words of caution from internet strangers.
I had learned i3 already and was focusing on keeping my hands on the keyboard for longer. I had a 2 week phase of watching the Primeagon and watching him use Neovim made me feel thoroughly embarrassed about how I wrote code. I already was sold on the logic, so seeing the benefits with my own eyes pushed me over the edge.
I got kickstarter working and after about 3 days of having vscode and neovim open next to each other, I found I was starting to move faster in neovim than vscode.
Now I have the confidence to open vi on a prod server and make changes. This new ability justified my desire to finally go for a programmable keyboard and now it’s very rare I touch my mouse at all.
Switching from Vim was a no-brainer. I was on WSL 1, and the Alt/Meta key support was horrendous at the time. Neovim supported it perfectly.
Years later Neovim adopts Lua, I went back and forth between Emacs and Neovim for several months. Neovim stuck, because for some reason it just works. Lua is a little easier to learn and write (before I find the time to sit down and read the elisp manual properly, appreciating the lisp-ness), my Neovim setup had a satisfactory number of features whilst having minimum moving parts. It became easier to maintain. As my current daily driver I don’t need to touch my config for months and it will work.
I also tried helix several weeks ago, it’s great, but it doesn’t support custom snippets and templates, among other things that were essential to the development for some of my projects.
I am not convinced Neovim is best for me, I miss Emacs from time to time. It’s just what I’ve sticked with and I’m happy with it for now.
Long time vim user here. Practically had to choose right after starting as a dev, never looked back. All my editors/IDEs run in vim mode nowadays.
I don’t like the hassle of plugin management in vanilla vim.
I didn’t like evil spacemacs, but I do enjoy magit a lot.
Then tried neovim: good out-of-the-box experience, better plugin management, ready-to-use systems like nvchad. It’s been great.
You should look into doom emacs, much better than spacemacs imo, especially as someone who also exclusively codes with vim keybinds
I don’t use it as much because my day-to-day is RStudio and Libre Office, but whenever I edit .nix files, I do it with Neovim. What convinced me was the internet’s lauding of Vim and reading about Lua and other quality of life improvements in Neovim. What convinced me was how easy it is to install and use for my minimal use case.
I don’t think I had an evaluation period beyond using interactive Vim tutorials until I felt comfortable with it.
hassle-free copy/paste on wayland was my first reason to switch from vim to neovim. nvchad second
Used to use vimium for a while in the browser due some RSI complaints. Years later a colleague of mine was bashing me I didn’t know how to use vim. Just to prove point I taught myself the basics, started using vim shortcuts in my IDE. Few months later I started using NvChad, which is amazing btw. After finding out about LSP support etc, I knew I could just switch completely.
Built my own config from scratch and been happily using neovim for about 2 years now.
Spite fueled level up. 😆
Conjure is what did it for me. I kept running into trouble with Clojure vs ClojureScript vs Babashka projects with vim. Just couldn’t get the config to work consistently when switching between projects.
The eval period was about a day.
I tried NeoVim pretty early on, I think, around 2014. My primary editor at the time was gVim (I prefer a proper graphical front-end to running in a terminal).
I used nvim on and off, primarily with nvim-qt as the front-end, though briefly with a custom setup that launched a new terminal emulator window and ran nvim there.
Once nvim incorporated nvim-qt into the base install, I started using it more regularly; eventually I switched entirely to Neovide and haven’t even installed gVim on my last few work computers.
I now primarily use VSCode with nvim integration. Unfortunately, I do have a weird issue where “undo” combines more operations than I’d expect, or, in some rare cases, it seems to corrupt the buffer and produce states that didn’t previously exist (!!). I don’t know if that’s an issue with the plugin, though.
I installed LazyVim a few days ago and like it so far for smaller changes.
Anyways i can’t use it for serious work due to missing features or i havent found them yet. I couldnt find out where to find plugins, how to install and configure them, its overwhelming.
I need full, in file, text search for the current directory, multi word editing, move lines up and down. Sure there are key combinations, but they all seems a bit long compared to VS Code.
Is there a slack for noobs like me or a Udemy course?
I wouldn’t expect that you could go from zero experience with Neovim/Vim to more efficient than the editor you’ve been using extensively in less than a month. most of the people that responded here had been using Vim prior to switching. The one that had no prior Vim experience took half a month to get the basics down and be comparable with their prior editor (VScode).
Everything you’re after is available, but trying to learn it all at once can be overwhelming as you’ve been experiencing.
So one step at a time, I suggest that you:
- Take less than an hour to learn about Lua Text Overview | Video
- Reinstall a fresh stable version of NeoVim and if you haven’t already followed the tutorial, follow it.
- Install ripgrep for full, in file, text search for the current (or specified) directory.
- Install kickstart.nvim and watch the kickstart.nvim walkthrough video to learn how configuration and plugins work in Neovim. (It also includes a Fuzzy Finder [fzf] that works with ripgrep inside of NeoVim.)
- Practice Vim Motions so they become second nature to you. Watch the first 5 videos of The Primeagen’s Vim Video Playlist to see the fundamental movements beyond what’s in the tutorial. You could use a VSCode extension that replicates Vim Modal Editing with Vim Keybindings to get used to the Vim Motions while you’re still using VSCode.
- Get familiar with the Neovim User Documentation which han be accessed and navigated with Vim Motions by typing
:help
while in Normal mode in Neovim - Watch videos on multiword/mulitline editing options with Neovim (Part 1) | (Part 2)
- Use other resources to learn more about Neovim and figure out what you want to do with it. alpha2phi has a series of articles on Medium but there are many many more. Including TypeCraft on YouTube
.
The best chat beginner community for Neovim that I know of is in The Odin Project Discord. There’s a Neovim thread in the #odin-general channel there. (Bonus, while you’re in the Discord you can help out others trying to learn web development.)
The point is to find your own way by learning from others, not to simply mimic others. Although up front, mimicing what others are doing is a good way to get started.
Take your time with all of this, there’s no rush.
Quick Update: Your Guide was a great start and i’m using wezterm, tmux and Neovim (kickstart-modular with my adjustments) in production. My biggest pain point currently is ‘d’ overrides my last yank. My favorite command is ‘cinq’
That awesome!
There are always many ways to deal with workflow annoyances you run into. Most people go looking for plugins or write a plugin or remap some keybindings, but many forget to read the manual to look for builtin solutions. In the case of using
d
, you can assign the deleted text to a register other than the default register for yank/delete commands.dd
will delete a line and send it to register"
"xdd
will delete a line and send it to registerx
p
will put the text from register"
after the cursor"xp
will put the text from registerx
after the cursorUse any lowercase letter for a register. There’s always more beneath the surface of simple vim features.
Relevant sections of the User Manual:
Wow, thank you for your time and extensive answer. This a huge motivation boost and will definitely help me getting into it.
I am a little late but look into VimBeGood plugin by Primeagen. If you don’t have basics down. It’s like an old typing game but for learning the basic vim commands.
trying to use nano and getting confused out of my mind
vim isn’t intuitive, but, for me, it feels correct