DEV Community


Discussion on: If you've recently switched code editors— How's it going so far?

bgord profile image
Bartosz Gordon

I switched from VSCode to VIM, and I'm glad I went this way.

I had some familiarity with the "language" of VIM, but it was on the very basic level. All of it started after I installed a VIM plugin for VSCode. Of course, in the beginning, it was hard, but after about a week, I became as efficient as with the "vanilla" VSCode.

After another week, my speed of editing has noticeably increased. I liked it, and I felt like it was the time to build my own .vimrc.
It took me about a week to set up the config that kind of matched my needs.

After two weeks, I realized that I've installed too many plugins, and I wasn't utilizing VIM's built-in features enough. The decision was made, I'm going to rebuild my config from scratch. I tried to adopt a problem-solving mindset, every time I bumped into some rough edge, I tried to solve this problem with a vanilla VIM features, only after that, I was reaching for a plugin.

These work for me the best:

  • fzf (multi-use fuzzy finder for file/tag/phrase search)
  • vim-ranger (a terminal file explorer/manager, I use it outside vim also)
  • goyo.vim (distraction-free writing mode, I use it mostly for prose)
  • vim-commentary (you don't need to know comment convention for all the filetypes)
  • vim-surround (change/add/delete common surroundings - quotes/tags/parenthesis)
  • ALE (Asynchronuous Linting Engine, I use it to run ESLint)
  • YouCompleteMe (a great autocompletion engine)
  • emmet-vim (write HTML/CSS like a wizard)
  • vim-import-js (auto-import a JS variable)
  • ctags (it scans your project and extracts the tags - significant variable names) and a few JS/TS specific plugins.

My productivity and speed of editing have increased. It's worth mentioning that tweaking the .vimrc was a ton of fun for me. Almost every day is a source of new tricks. In addition to VIM, I use tmux as a terminal multiplexer, so all of my development takes place in one terminal window.