There are tons of Vim plugins out there. In this and the next post I will list my favorite ones. These are some of the best plugins to increase productivity. Included is a synopsis and my configuration for each plugin. The list is in descending order of awesomeness. Tested in Vim 8.1.

10. online-thesaurus

Prints synonyms for the word under the cursor. It does its magic by requesting data from thesaurus.com. It’s great for writing essays. Typing Ctrl-S opens a new window with 10+ synonyms of the current word. I replace the default mapping with:

let g:online_thesaurus_map_keys = 0
nnoremap <c-s> :<c-u>OnlineThesaurusCurrentWord<cr>

9. vim-ruby

Vim-ruby makes editing ruby code a much pleasant experience. It defines indentation/syntax rules, and mappings that boost editing speed.

8. jk-jumps

Adds j/k movements to the jumplist to quickly move back and forth with O and I. My config is:

let g:jk_jumps_minimum_lines=5
nnoremap <silent> j :<C-U>call JkJumps('j')<CR>
nnoremap <silent> k :<C-U>call JkJumps('k')<CR>

7. surround

Lets you add/delete/change the surrounding elements of a piece text. If I have ${this} and type cs}) I get $(this). Surround is even better when combined with the next plugin, repeat.

6. repeat

One of Vim’s must powerful features is the dot command. The repeat plugin lets you use the . command with user defined maps. A common use case is when editing CSS:

body {
  margin: 0;
  font-weight: 100;
  letter-spacing: .5px;
  font-family: Helvetica, "Arial Black", "Times New Roman";
  font-size: 1rem;
  line-height: 1.8;
  color: #000;
  text-align: left;
}

To comment all the lines after font-family I can type <m-/>j.j.j. and get

body {
  margin: 0;
  font-weight: 100;
  letter-spacing: .5px;
  font-family: Helvetica, "Arial Black", "Times New Roman";
  /* font-size: 1rem; */
  /* line-height: 1.8; */
  /* color: #000; */
  /* text-align: left; */
}

And this is it for the first part of the list. In the next post I will talk about my top 5 favorite Vim plugins of all time.