From 460ec98052e07bbf16d8143d8f242280662582a6 Mon Sep 17 00:00:00 2001 From: jdhao Date: Thu, 26 Sep 2019 23:18:19 +0800 Subject: Split large nvim config into several files for easier management --- mappings.vim | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 mappings.vim (limited to 'mappings.vim') diff --git a/mappings.vim b/mappings.vim new file mode 100644 index 0000000..ec7b6fa --- /dev/null +++ b/mappings.vim @@ -0,0 +1,170 @@ +"{ Custom key mappings +" Save key strokes (now we do not need to press shift to enter command mode). +" Vim-sneak has also mapped `;`, so using the below mapping will break the map +" used by vim-sneak +nnoremap ; : +xnoremap ; : + +" Quicker way to open command window +nnoremap q; q: + +" Quicker in insert mode +inoremap jk + +" Turn the word under cursor to upper case +inoremap viwUea + +" Turn the current word into title case +inoremap b~lea + +" Paste non-linewise text above or below current cursor, +" see https://stackoverflow.com/a/1346777/6064933 +nnoremap p m`op`` +nnoremap P m`Op`` + +" Shortcut for faster save and quit +nnoremap w :update +" Saves the file if modified and quit +nnoremap q :x +" Quit all opened buffers +nnoremap Q :qa + +" Navigation in the location and quickfix list +nnoremap [l :lpreviouszv +nnoremap ]l :lnextzv +nnoremap [L :lfirstzv +nnoremap ]L :llastzv +nnoremap [q :cpreviouszv +nnoremap ]q :cnextzv +nnoremap [Q :cfirstzv +nnoremap ]Q :clastzv + +" Close location list or quickfix list if they are present, +" see https://goo.gl/uXncnS +nnoremap \x :windo lclose cclose + +" Close a buffer and switching to another buffer, do not close the +" window, see https://goo.gl/Wd8yZJ +nnoremap \d :bprevious bdelete # + +" Toggle search highlight, see https://goo.gl/3H85hh +nnoremap hl (&hls && v:hlsearch ? ':nohls' : ':set hls')."\n" + +" Disable arrow key in vim, see https://goo.gl/s1yfh4. +nnoremap +nnoremap +nnoremap +nnoremap +inoremap +inoremap +inoremap +inoremap + +" Insert a blank line below or above current line (do not move the cursor), +" see https://stackoverflow.com/a/16136133/6064933 +nnoremap oo 'm`' . v:count1 . 'o``' +nnoremap OO 'm`' . v:count1 . 'O``' + +" nnoremap oo @='m`o``' +" nnoremap OO @='m`O``' + +" the following two mappings work, but if you change double quote to single, it +" will not work +" nnoremap oo @="m`o\Esc>``" +" nnoremap oo @="m`o\e``" + +" Insert a space after current character +nnoremap ah + +" Yank from current cursor position to the end of the line (make it +" consistent with the behavior of D, C) +nnoremap Y y$ + +" Move the cursor based on physical lines, not the actual lines. +nnoremap j (v:count == 0 ? 'gj' : 'j') +nnoremap k (v:count == 0 ? 'gk' : 'k') +nnoremap ^ g^ +nnoremap 0 g0 + +" Do not include white space characters when using $ in visual mode, +" see https://goo.gl/PkuZox +xnoremap $ g_ + +" Jump to matching pairs easily in normal mode +nnoremap % + +" Go to start or end of line easier +nnoremap H ^ +xnoremap H ^ +nnoremap L g_ +xnoremap L g_ + +" Resize windows using and h,j,k,l, inspiration from +" https://goo.gl/vVQebo (bottom page). +" If you enable mouse support, shorcuts below may not be necessary. +nnoremap < +nnoremap > +nnoremap - +nnoremap + + +" Fast window switching, inspiration from +" https://stackoverflow.com/a/4373470/6064933 +nnoremap h +nnoremap l +nnoremap j +nnoremap k + +" Continuous visual shifting (does not exit Visual mode), `gv` means +" to reselect previous visual area, see https://goo.gl/m1UeiT +xnoremap < >gv + +" When completion menu is shown, use to select an item +" and do not add an annoying newline. Otherwise, is what it is. +" For more info , see https://goo.gl/KTHtrr and https://goo.gl/MH7w3b +inoremap ((pumvisible())?("\"):("\")) +" Use to close auto-completion menu +inoremap ((pumvisible())?("\"):("\")) + +" Edit and reload init.vim quickly +nnoremap ev :edit $MYVIMRC +nnoremap sv :silent update $MYVIMRC source $MYVIMRC + \ echomsg "Nvim config successfully reloaded!" + +" Reselect the text that has just been pasted +nnoremap v `[V`] + +" Use sane regex expression (see `:h magic` for more info) +nnoremap / /\v + +" Find and replace (like Sublime Text 3) +nnoremap :%s/ +xnoremap :s/ + +" Change current working directory locally and print cwd after that, +" see https://vim.fandom.com/wiki/Set_working_directory_to_the_current_file +nnoremap cd :lcd %:p:h:pwd + +" Use Esc to quit builtin terminal +tnoremap + +" Toggle spell checking (autosave does not play well with z=, so we disable it +" when we are doing spell checking) +nnoremap :set spell! :AutoSaveToggle +inoremap :set spell! :AutoSaveToggle + +" Decrease indent level in insert mode with shift+tab +inoremap < :call utils#StripTrailingWhitespaces() + +" check the syntax group of current cursor position +nnoremap st :call utils#SynGroup() +"} -- cgit v1.2.3