"============================================================== " Key mapping {{{ "============================================================== " custom leader noremap map , " noremap ; "sandwich & nnoremap s xnoremap s nnoremap S xnoremap S " noremap m " nnoremap z nnoremap ' nnoremap t nnoremap H " use gJ nnoremap J nnoremap K nnoremap L nnoremap M nnoremap T nnoremap Q " multicursor nnoremap C " operator-replace nnoremap X " not use nnoremap U " nnoremap Z " use 0 nnoremap ! nnoremap @ " not use nnoremap # " not use nnoremap ^ " not use nnoremap & " not use nnoremap ? " not use nnoremap ~ nnoremap _ " not use nnoremap = nnoremap nnoremap nnoremap nnoremap nnoremap nnoremap nnoremap nnoremap nnoremap nnoremap noremap " nnoremap " = " noremap " use quickfix if exists('*reg_recording') nnoremap qq reg_recording() is# '' ? 'qq' : 'q' noremap q endif nnoremap gh nnoremap gj nnoremap gk nnoremap gl nnoremap gn nnoremap gm nnoremap go nnoremap gq nnoremap gr nnoremap gs nnoremap gw nnoremap g^ nnoremap g? nnoremap gQ nnoremap gR nnoremap gT " remap nnoremap gK K nnoremap g~ ~ nnoremap g@ @ nnoremap g= = nnoremap gzz zz " move cursor noremap j v:count ? 'j' : 'gj' noremap k v:count ? 'k' : 'gk' vnoremap j v:count ? 'j' : 'gj' vnoremap k v:count ? 'k' : 'gk' nnoremap j nnoremap k nnoremap l nnoremap h nnoremap p tnoremap j tnoremap k tnoremap l tnoremap h " jump cursor nnoremap v:count ? '0' : '10l' nnoremap &buftype ==# 'quickfix' ? "\" : v:count ? '0jzz' : '10jzz' " Automatically indent with i and A made by ycino nnoremap i len(getline('.')) ? "i" : '"_cc' nnoremap A len(getline('.')) ? "A" : '"_cc' " toggle 0, ^ made by ycino nnoremap 0 getline('.')[0 : col('.') - 2] =~# '^\s\+$' ? '0' : '^' "nnoremap $ getline('.')[col('.') : -1] =~# '^\s\+$' ? '$' : 'g_' " high-functioning undo " nnoremap u g- " nnoremap g+ " undo behavior inoremap u inoremap u inoremap u inoremap u " Emacs style cnoremap if !exists('g:vscode') cnoremap endif inoremap inoremap inoremap inoremap inoremap inoremap inoremap inoremap " remap join " nnoremap U J " remap H M L nnoremap gH H nnoremap gM M nnoremap gL L " function key imap imap imap imap imap imap imap imap imap imap imap imap cmap cmap cmap cmap cmap cmap cmap cmap cmap cmap cmap cmap map map map map map map map map map map map map map map map map map map map map map map map map map " ハイライト消す nnoremap gq :nohlsearch " yank nnoremap Y y$ vnoremap gy y`> vnoremap y "+y vnoremap d "+d " paste nnoremap gp ]p vnoremap gp ]p nnoremap p "+p nnoremap P "+P vnoremap p "+p vnoremap P "+P " x,dはレジスタに登録しない noremap x "_x nnoremap d "_d nnoremap D "_D " インクリメント設定 noremap + noremap _ " move changes nnoremap g;zz nnoremap g,zz nnoremap @ g;zz nnoremap # g,zz " refresh Use to clear the highlighting of :set hlsearch. if maparg('', 'n') ==# '' nnoremap :nohlsearch=has('diff')?'diffupdate':'' endif " move tab "nnoremap gT "nnoremap gt " move buffer nnoremap :if vimrc#is_normal_buffer() execute "bprev" endif nnoremap :if vimrc#is_normal_buffer() execute "bnext" endif nnoremap H :if vimrc#is_normal_buffer() execute "bprev" endif nnoremap L :if vimrc#is_normal_buffer() execute "bnext" endif nnoremap :if vimrc#is_normal_buffer() execute "bprev" endif nnoremap :if vimrc#is_normal_buffer() execute "bnext" endif nnoremap [q :cprevious nnoremap ]q :cnext nnoremap [Q :cfirst nnoremap ]Q :clast nnoremap [l :lprevious nnoremap ]l :lnext nnoremap [L :lfirst nnoremap ]L :llast nnoremap [b :bprevious nnoremap ]b :bnext nnoremap [B :bfirst nnoremap ]B :blast nnoremap [t :tabprevious nnoremap ]t :tabnext nnoremap [T :tabfirst nnoremap ]T :tablast nnoremap [; g;zz nnoremap ]; g,zz " switch quickfix/location list nnoremap q :copen nnoremap l :lopen " Go to tab by number "nnoremap 1 1gt "nnoremap 2 2gt "nnoremap 3 3gt "nnoremap 4 4gt "nnoremap 5 5gt "nnoremap 6 6gt "nnoremap 7 7gt "nnoremap 8 8gt "nnoremap 9 9gt "nnoremap 0 :tablast " Tab move(alt-left/right) "nnoremap :execute 'silent! tabmove ' . (tabpagenr()-2) "nnoremap :execute 'silent! tabmove ' . (tabpagenr()+1) " change paragraph "nnoremap ( {zz "nnoremap ) }zz "nnoremap ]] ]]zz "nnoremap [[ [[zz "nnoremap [] []zz "nnoremap ][ ][zz " For search nnoremap g/ /\v noremap * g*N " noremap # g#n noremap g* *N noremap g# #n vnoremap * y/"N vnoremap z/ /\%V vnoremap z? ?\%V " For replace nnoremap gr gd[{V%::s////gc nnoremap gR gD:%s////gc nnoremap s :%s/\<\>/ vnoremap s :s/\%V " Undoable inoremap u inoremap u " Change current directory nnoremap cd :lcd %:p:h:pwd " Delete buffer nnoremap bd :bdelete nnoremap :bdelete nnoremap :edit # " Delete all marks nnoremap md :delmarks! " Change encoding nnoremap eu :e ++enc=utf-8 nnoremap es :e ++enc=cp932 nnoremap ee :e ++enc=euc-jp nnoremap ej :e ++enc=iso-2022-jp " tags jump nnoremap g " goto nnoremap gf gF nnoremap f F nnoremap gf F nnoremap F nnoremap g F " split goto nnoremap -gf :splitgF nnoremap gf :vsplitgF nnoremap - :splitg nnoremap :vsplitg "split nnoremap - :split nnoremap :vsplit nnoremap -- :split nnoremap :vsplit " useful search nnoremap n 'Nn'[v:searchforward] nnoremap N 'nN'[v:searchforward] cnoremap > " Edit macro nnoremap me :='let @'. v:register .' = '. string( \ getreg(v:register)) " indent xnoremap < >gv nnoremap ( { nnoremap ) } nnoremap [[ [m nnoremap ]] ]m " expand path cmap =expand('%:p:h')/ " expand file (not ext) cmap =expand('%:p:r') " completion inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\\\" : "\" inoremap pumvisible() ? "\\\" : "\" inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " fold " nnoremap Zo zo " -> use l nnoremap gzO zO nnoremap gzc zc nnoremap gzC zc nnoremap gzR zR nnoremap gzM zM nnoremap gza za nnoremap gzA zA nnoremap gz zMzvzz " command history cnoremap cnoremap cnoremap cnoremap " quit nnoremap ZZ nnoremap ZQ " command window execute "set cedit=\" " }}}