From d834d6da82ba20e32699380d335a65936bad16f9 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Mon, 8 Jul 2024 22:49:59 +0800 Subject: Update --- vim/init/keymaps.vim | 181 ++++++++++++++++++--------------------------------- 1 file changed, 62 insertions(+), 119 deletions(-) (limited to 'vim/init/keymaps.vim') diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 3360a53..f7098a6 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim @@ -2,28 +2,13 @@ " " Only for key mapping " -" COMMON_MAPPING -" MANAGE_VIMRC -" MOVING_WITH_READLINE -" INSERT_SURROUNDING -" JUMP_TO_TABS_WITH_ALT -" MANAGE_TABS -" MANAGE_BUFFERS -" MANAGE_WINDOWS -" FOLDING -" SURROURD_WITH_CHAR -" REDIRECTION_WITH_BUFFER -" QUICK_SUBSTITUTE -" GIT_TIG " 终端支持 " 编译运行 " "====================================================================== " vim: set ts=4 sw=4 tw=78 noet : -"---------------------------------------------------------------------- -" COMMON_MAPPING -"---------------------------------------------------------------------- +" COMMON_MAPPING ----------------{{{ " Space for searching map / @@ -135,18 +120,13 @@ nnoremap so V:so nnoremap so :source ~/.vimrc vnoremap so :source - -"---------------------------------------------------------------------- -" MANAGE_VIMRC -"---------------------------------------------------------------------- +" }}} +" MANAGE_VIMRC ----------------{{{ nnoremap e :scriptnames nnoremap ee :edit $MYVIMRC autocmd! BUFWRITEPOST $MYVIMRC source $MYVIMRC - - -"---------------------------------------------------------------------- -" MOVING_WITH_READLINE -"---------------------------------------------------------------------- +" }}} +" MOVING_WITH_READLINE ----------------{{{ inoremap inoremap inoremap 0 @@ -178,19 +158,15 @@ noremap gj noremap gk inoremap gj inoremap gk - -"---------------------------------------------------------------------- -" INSERT_SURROUNDING -"---------------------------------------------------------------------- +" }}} +" INSERT_SURROUNDING ----------------{{{ inoremap ' '' inoremap " "" inoremap ( () inoremap [ [] inoremap { {} - -"---------------------------------------------------------------------- -" JUMP_TO_TABS_WITH_ALT -"---------------------------------------------------------------------- +" }}} +" JUMP_TO_TABS_WITH_ALT ----------------{{{ noremap :tabn 1 noremap :tabn 2 noremap :tabn 3 @@ -209,11 +185,8 @@ inoremap :tabn 6 inoremap :tabn 7 inoremap :tabn 8 inoremap :tablast - - -"---------------------------------------------------------------------- -" MANAGE_TABS -"---------------------------------------------------------------------- +" }}} +" MANAGE_TABS ----------------{{{ " Useful mappings for managing tabs map tn :tabnew @@ -246,11 +219,8 @@ function! Tab_MoveRight() exec 'tabmove '.l:tabnr endif endfunc - - -"---------------------------------------------------------------------- -" MANAGE_BUFFERS -"---------------------------------------------------------------------- +" }}} +" MANAGE_BUFFERS ----------------{{{ " Open a new buffer nmap b :enew @@ -294,18 +264,43 @@ function! s:SwitchDiffForGitHEAD() endfunction com! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD() nnoremap D silent! SwitchDiffForGitHEAD - - -"---------------------------------------------------------------------- -" MANAGE_WINDOWS -"---------------------------------------------------------------------- +" }}} +" MANAGE_WINDOWS ----------------{{{ nnoremap sb :windo set scrollbind! - -"---------------------------------------------------------------------- -" FOLDING +" 窗口切换:ALT+SHIFT+hjkl +" 传统的 CTRL+hjkl 移动窗口不适用于 vim 8.1 的终端模式,CTRL+hjkl 在 +" bash/zsh 及带文本界面的程序中都是重要键位需要保留,不能 tnoremap 的 "---------------------------------------------------------------------- +noremap h +noremap l +noremap j +noremap k +inoremap h +inoremap l +inoremap j +inoremap k +if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') + " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 + " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? + " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 + set termwinkey= + tnoremap h + tnoremap l + tnoremap j + tnoremap k + tnoremap +elseif has('nvim') + " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 + tnoremap h + tnoremap l + tnoremap j + tnoremap k + tnoremap +endif +" }}} +" FOLDING ----------------{{{ " Set foldmethod noremap fm :e'set foldmethod='..&foldmethod @@ -317,11 +312,8 @@ nnoremap l foldclosed('.') == -1 ? 'l' : 'zo' " Open fold in next line nnoremap zo foldclosed('.') == -1 ? 'zjzo' : 'zo' nnoremap zO foldclosed('.') == -1 ? 'zjzO' : 'zO' - - -"---------------------------------------------------------------------- -" SURROURD_WITH_CHAR -"---------------------------------------------------------------------- +" }}} +" SURROURD_WITH_CHAR ----------------{{{ vnoremap S sa vnoremap ' ``>la' vnoremap q ``>la" @@ -331,11 +323,9 @@ vnoremap { ``>la} vnoremap ` ``>la` vnoremap ``>la vnoremap Q ``>la」 +" }}} +" REDIRECTION_WITH_BUFFER ----------------{{{ - -"---------------------------------------------------------------------- -" REDIRECTION_WITH_BUFFER -"---------------------------------------------------------------------- " Usage: " :Redir hi ............. show the full output of command ':hi' in a scratch window " :Redir !ls -al ........ show the full output of command ':!ls -al' in a scratch window @@ -362,12 +352,10 @@ endfunction command! -nargs=1 -complete=command Redir silent call Redir() nnoremap rr :Redir +" }}} +" QUICK_SUBSTITUTE ----------------{{{ - -"---------------------------------------------------------------------- -" QUICK_SUBSTITUTE -" Press n times for area, and for substitute -"---------------------------------------------------------------------- +" Usage: Press n times for area, and for substitute " substitute across file vnoremap s y:%s//0/g @@ -395,21 +383,16 @@ vnoremap call ExpandSelectionBySearch('/') vnoremap call ExpandSelectionBySearch('?') vnoremap call SubstituteBySearch() - -"---------------------------------------------------------------------- -" GIT_TIG -"---------------------------------------------------------------------- +" }}} +" GIT_TIG ----------------{{{ let g:tig_explorer_keymap_commit_split = '' let g:tig_explorer_keymap_commit_vsplit = '' nnoremap Tig nnoremap s TigStatus nnoremap b TigBlame nnoremap d :vertical TigOpenFileWithCommit + % 0 - - -"---------------------------------------------------------------------- -" Markdown items (temproray solution) -"---------------------------------------------------------------------- +" }}} +" Markdown items (temproray solution) ----------------{{{ " Toggle list item in markdown: "- [ ] XXX" -> "XXX" -> "- XXX" -> "- [ ] XXX" " autocmd FileType markdown nnoremap i V:!sed -E '/^ *- \[.\]/ { s/^( *)- \[.\] */\1/; q; }; /^ *[^[:space:]-]/ { s/^( *)/\1- /; q; }; /^ *- / { s/^( *)- /\1- [ ] /; q; }' @@ -417,53 +400,14 @@ nnoremap d :vertical TigOpenFileWithCommit + % 0 " Toggle task status: "- [ ] " -> "- [x]" -> "- [.] " -> "- [ ] " " nnoremap x V:!sed -E '/^ *- \[ \]/ { s/^( *)- \[ \]/\1- [x]/; q; }; /^ *- \[\x\]/ { s/^( *)- \[\x\]/\1- [.]/; q; }; /^ *- \[\.\]/ { s/^( *)- \[\.\]/\1- [ ]/; q; }' - - -"---------------------------------------------------------------------- -" Common command -"---------------------------------------------------------------------- +" }}} +" Common system command ----------------{{{ " Show date selector nnoremap dd :r !sh -c 'LANG=en zenity --calendar --date-format="\%Y.\%m.\%d" 2>/dev/null' nnoremap dD :r !sh -c 'LANG=en zenity --calendar --date-format="\%a \%b \%d" 2>/dev/null' nnoremap dt :r !date +\%H:\%mA - - -"---------------------------------------------------------------------- -" 窗口切换:ALT+SHIFT+hjkl -" 传统的 CTRL+hjkl 移动窗口不适用于 vim 8.1 的终端模式,CTRL+hjkl 在 -" bash/zsh 及带文本界面的程序中都是重要键位需要保留,不能 tnoremap 的 -"---------------------------------------------------------------------- -noremap h -noremap l -noremap j -noremap k -inoremap h -inoremap l -inoremap j -inoremap k - -if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') - " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 - " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? - " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 - set termwinkey= - tnoremap h - tnoremap l - tnoremap j - tnoremap k - tnoremap -elseif has('nvim') - " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 - tnoremap h - tnoremap l - tnoremap j - tnoremap k - tnoremap -endif - - - -"---------------------------------------------------------------------- +" }}} +" Compile ----------------{{{ " 编译运行 C/C++ 项目 " 详细见:http://www.skywind.me/blog/archives/2084 "---------------------------------------------------------------------- @@ -501,7 +445,6 @@ if has('win32') || has('win64') endif -"---------------------------------------------------------------------- " F5 运行当前文件:根据文件类型判断方法,并且输出到 quickfix 窗口 "---------------------------------------------------------------------- function! ExecuteFile() @@ -548,7 +491,6 @@ endfunc -"---------------------------------------------------------------------- " F2 在项目目录下 Grep 光标下单词,默认 C/C++/Py/Js ,扩展名自己扩充 " 支持 rg/grep/findstr ,其他类型可以自己扩充 " 不是在当前目录 grep,而是会去到当前文件所属的项目目录 project root @@ -569,3 +511,4 @@ else \ --include='*.js' --include='*.vim' \ '' endif +" }}} -- cgit v1.2.3-70-g09d2