Vim: Delightful settings and plugins

Brian Mayo
3 min readDec 15, 2021

Hi everyone, lately I have been enjoying my neovim setup a lot so I decided to share some settings and plugins that you might find neat and helpful. Let’s go!

Mappings

Here the mappings I consider important in my vim configuration.

First, I like to map the leader to space. This feels way more natural than using \ when typing.

let mapleader = "\<space>"

We continue with:

inoremap <C-c> <esc>
nnoremap ; :
" quick-save
nmap <leader>w :w<CR>
" close buffer without changing window layout
nnoremap :: :bp\|bd #<CR>

A feature I use a lot in vscode is the ability to move lines up and down. Thanks to the primeagen (I love his energy and his vim skills are super human) I got to learn about these mappings to achieve the same result

" Moving lines up or down preserving format {
vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv
inoremap <C-j> <esc>:m .+1<CR>==gi
inoremap <C-k> <esc>:m .-2<CR>==gi
nnoremap <leader>j :m .+1<CR>==
nnoremap <leader>k :m .-2<CR>==
" }

Another mappings that make life easier

" set a column at position 100
set colorcolumn=100
highlight ColorColumn ctermbg=0 guibg=lightgrey
" select everything
nnoremap <C-A> ggVG
" open new file adjacent to current file
nnoremap <leader>o :e <C-R>=expand("%:p:h") . "/" <CR>
" toggle between buffers current and prev buffer
nnoremap <leader><leader> <c-^>

Plugins

Note: I personally use vim-plug but any vim plugin manager should work as well.

NERDCommenter

Not much to say about this one. I have it mapped to Ctrl+/ in this way

nmap <C-_> <Plug>NERDCommenterToggle
vmap <C-_> <Plug>NERDCommenterToggle<CR>gv

Vim-Airline

With this configuration

" Airline {
let g:airline_theme='papercolor'
" show git branch
let g:airline#extensions#branch#enabled=1
let g:airline#extensions#hunks#enabled=0
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#fnamemod = ':t'
" }

Fugitive

Git integration. These are my configs

" Fugitive {
function! ToggleGStatus()
if buflisted(bufname('.git/index'))
bd .git/index
else
vertical Git | vertical resize 40
endif
endfunction
command ToggleGStatus :call ToggleGStatus()
nmap <F3> :ToggleGStatus<CR>
nmap <leader>gj :diffget //3<CR>
nmap <leader>gf :diffget //2<CR>
" }

Telescope

I’m just amazed but the amount of features of this plugin. Here my config that can give you some idea what is it about

" Telescope {
nnoremap <leader>ff <cmd>Telescope find_files<cr>
" open in current file pwd
nnoremap <leader>fc :lua require('telescope.builtin').file_browser({cwd = vim.fn.expand('%:p:h')})
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fr :lua require('telescope.builtin').registers()<CR>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
" display help tags for all extensions
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
nnoremap <leader>fk :lua require('telescope.builtin').keymaps()<CR>
nnoremap <leader>fz :lua require('telescope.builtin').current_buffer_fuzzy_find()<CR>
" show all your colorschemes to try
nnoremap <leader>ft :lua require('telescope.builtin').colorscheme()<CR>
" }

vim-visual-multi

Let’s you have multiple cursor as in vscode

Color Schemes

I have installed awesome-vim-colorschemes and I love PaperColor at the moment. Here an example of a go file.

That’s all.
You can check my init.vim at my dotfiles repo.

Do you have any awesome config to share? Please leave a comment 🚀

--

--

Brian Mayo

I’m a software engineer currently working with Go and playing around with Rust