Vim: Delightful settings and plugins

protium - Dec 15 '21 - - Dev Community

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>"
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

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>==
" }
Enter fullscreen mode Exit fullscreen mode

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-^>
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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'
" }
Enter fullscreen mode Exit fullscreen mode

Vim Airline

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>
" }
Enter fullscreen mode Exit fullscreen mode

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>
" }
Enter fullscreen mode Exit fullscreen mode

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.

vim color scheme

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 🚀

. . . . . . . . . . . . . . . . . . . . . . . . . . . .