Prerequisites: basic knowledge of vim editor, minimal plugin configuration.
I read a lot of plugin posts over the internet back when I begun using vim. While I still find them supportive for starters, they suggest the same plugins over and over.
Today I will talk about a bunch of unknown plugins which give the editor a modern look and feel. I call them “unknown” because the number of stars these projects received doesn’t go above 1000.
I will include installation commands for vim-plug
1 plugin manager and optional configuration useful for the users. You can use your plugin manager of choice by replacing Plug
with whatever it uses.
1. colorizer2
Have you read an HTML color code and asked yourself which color represented? In this case, colorizer
will save your day. I enjoy it the most when working on small CSS files and on dotfiles.
Installation:
Plug 'lilydjwg/colorizer'
2. rainbow3
Doesn’t matter which language you’re writing in, nested parentheses and braces give developers headaches; matches highlighting don’t help much either.
rainbow
highlights the parentheses and braces based on their nesting level; as a result, the window will be hightlighted with “rainbow” colors, hence the plugin name.
But it’s easier to see with some lisp code:
Installation:
Plug 'luochen1990/rainbow'
rainbow
can the toggled using :RainbowToggle
; to enable the plugin at startup add:
let g:rainbow_active = 1
3. vim-illuminate4
vim-illuminate
highlights the words in the current buffer matching the one under the cursor, letting you glance at once the local references of a variable or method.
Plug 'RRethy/vim-illuminate'
The default configuration shipped is sane and use cursorline
as highlight group. Since I prefer a highlight group little more constrast with the background, I set Visual
in place of cursorline
:
hi link illuminatedWord Visual
4. vim-smooth-scroll5
Window scroll in vim comply to the overall efficiency. However, scroll isn’t the nicest feature to expect from a modern editor, expecially when we run many instances of Chrome at the same time (I’m pointing at you Electron!). vim-smooth-scroll
provides exactly this feature:
Plug 'terryma/vim-smooth-scroll'
noremap <silent> <c-u> :call smooth_scroll#up(&scroll, 0, 2)<CR>
noremap <silent> <c-d> :call smooth_scroll#down(&scroll, 0, 2)<CR>
noremap <silent> <c-b> :call smooth_scroll#up(&scroll*2, 0, 4)<CR>
noremap <silent> <c-f> :call smooth_scroll#down(&scroll*2, 0, 4)<CR>
You can customize dinstance, duration and speed by changing the respective parameters of smooth_scroll#
methods. I personally prefer a value of 5
for duration:
noremap <silent> <c-u> :call smooth_scroll#up(&scroll, 5, 2)<CR>
5. vim-search-pulse
vim-search-pulse
add a tiny and peculiar feature: it pulses every time you scroll the search results by pressing n
/N
.
Plug 'inside/vim-search-pulse'
The pulse duration can be customized to user’s taste.
let g:vim_search_pulse_duration = 200
bonus: semshi6
Note: the following plugin works in Neovim but doesn’t support Vim 8 due to a missing equivalent highlighting API, sorry folks! Have you considered upgrading to neovim?
semshi
provides semantic highlighting for Python. Semantic highlighting directly follow syntax’s one in color coding, coloring fixed words and all the remaining words. Analizing the code, it rapidly gives each word a color based on its type, with a much better result than before.
- With semshi
- Without semshi
This plugin is fast, static and works on single files; it means that it doesn’t need to know how your project structure and can be invoked anywhere.