Files
dotfiles/nvim/mappings.vim
2021-12-09 16:22:17 +01:00

105 lines
2.3 KiB
VimL

" *** *** *** Key Mappings *** *** ***
" ************************************
" Quick toggle between buffers
noremap <leader>j :b#<CR>
" Add semicolon or comma to the end of the line
nnoremap ;; A;<ESC>
nnoremap ,, A,<ESC>
" Maintain the cursor position when yanking a visual selection
vnoremap y myy`y
vnoremap Y myY`y
" Delete last character of line
nnoremap <leader>x $x
" Open vim config in a new buffer, reload vim config
nnoremap <leader>ve :e $MYVIMRC<CR>
nnoremap <leader>vr :source $MYVIMRC<CR>
" Delete current buffer
nnoremap <silent> <leader>X :bd<CR>
" Delete all buffers
nnoremap <silent> <leader>da :bufdo bdelete<CR>
" Save current buffer
nnoremap <silent> <leader>sf :w<CR>
" Allow gf to open non-existent files
map gf :edit <cfile><CR>
" Reselect visual selection after indenting
vnoremap < <gv
vnoremap > >gv
" Set spell checker to `s`
" zg (good), zG (good temp), zw (wrong), zW (wrong temp)
nnoremap <silent> <leader>s :set spell!<CR>
" Switch off highlighting
nnoremap <silent> <leader>h :nohlsearch<CR>
" Toogle list
nnoremap <leader>l :set list!<CR>
" Indent the whole source code
nnoremap <leader>ff gg=G''
" Reverse the mark mapping
nnoremap ' `
nnoremap ` '
" Visuall select of just pasted content
nnoremap gp `[v`]
nnoremap gy `[v`]y
" When text is wrapped, move by terminal rows, not lines, unless a count is provided
noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j')
noremap <silent> <expr> k (v:count == 0 ? 'gk' : 'k')
" Open a quickfix window for the last search
nnoremap <silent> <leader>? :execute 'vimgrep /'.@/.'/g %'<CR>:copen<CR>
" Faster linewise scrolling
noremap <C-e> 3<C-e>
noremap <C-y> 3<C-y>
" Keep the window centered
noremap G Gzzzv
noremap n nzzzv
noremap N Nzzzv
noremap } }zzzv
noremap { {zzzv
" Close all buffers
nnoremap XX :qa<CR>
" Add lines in NORMAL Mode
nnoremap gn o<ESC>k
nnoremap gN O<ESC>j
" Change to the folder of the current file
nnoremap <silent> <leader>cf :cd %:p:h<CR>:pwd<CR>
" Quickfix Window
nnoremap <leader>qo :copen<CR>
nnoremap <leader>qc :cclose<CR>
" Exit INSERT MODE with 'jk'
inoremap jj <ESC>
" Reformat a line into a block
nnoremap <leader>q gqip
" Reformat a block into a line
nnoremap <leader>qq vipJ
" Easier split navigation
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>