Skip to main content

Going "Full Vim" for my development work

For the past few months, I've gone "full Vim" (Neovim, to be exact) when writing any code - including anything for work or freelance projects, this blog post, and any presentation slide decks.

I've been a long-time casual Vim user, enabling Vi or Vim mode within other editors, including Sublime Text, PhpStorm, and VS Code, and using Vim to write Git commit messages or to edit single files before closing it again. I remember searching how to add Vim features like relative line numbers in other editors, and trying things that would work within Vim but not when using in a plugin or extension.

I've seen people and companies like Lorna Jane Mitchell, Suz Hinton (noopkat), and Thoughtbot using Vim in their presentations and videos for a long time but I haven't tried to switch before myself.

Inspired by them and others including Robin Malfait, TheAltF4Stream, Codico, Michael Dyrynda, ThePrimeagen with their recent live streams, videos, podcasts, and courses, I decided to give it a try.

Plugins

You can see the full list of plugins on GitHub, but here are some of the main ones that I've been using so far:

  • fzf - a fuzzy-finder to easily locate and open files.
  • CoC and Intelephense - adds auto-completion and code snippet support, including refactorings such as renaming symbols.
  • NERDTree - a tree explorer, though I usually use the fuzzy finder so this isn't used that often.
  • Git gutter - displays Git diff information in the gutter of the current file.
  • Blamer - inspired by the GitLens plugin for VS Code, displays git blame information for the current line.
  • Nord, jellybeans, and ayu - different themes that I'm trying and switching between.

Configuration

If you'd like to see my full Neovim configuration, see the .config/nvim directory and the init.vim file in my Dotfiles repository on GitHub.

Conclusion

I'm enjoying my first few months of using Vim full-time, and so far, I haven't looked back. I''ve had no issues using it in a Windows/WSL 2 environment either, which was great.

I have a cheat sheet on GitHub Gists where I note the current things that I'm trying to learn and commit to memory.

As I use it and learn more, I'm sure that I'll be posting more Vim-related content here too.

Have any Vim/Neovim suggestions, tips, or tricks? Let me know on Twitter.

Comments or questions? I'm @opdavies on Twitter.