DEV Community


Posted on


Vim: Delightful settings and plugins

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!


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


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


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


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


Git integration. These are my configs

" Fugitive {
function! ToggleGStatus()
    if buflisted(bufname('.git/index'))
        bd .git/index
            vertical Git | vertical resize 40
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


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


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 πŸš€

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.