diff options
Diffstat (limited to 'vim/init')
| -rw-r--r-- | vim/init/keymaps.vim | 66 |
1 files changed, 41 insertions, 25 deletions
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 2475ad8..68a82a5 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
| @@ -2,18 +2,19 @@ | |||
| 2 | " | 2 | " |
| 3 | " Only for key mapping | 3 | " Only for key mapping |
| 4 | " | 4 | " |
| 5 | " - COMMON_MAPPING | 5 | " COMMON_MAPPING |
| 6 | " - MANAGE_VIMRC | 6 | " MANAGE_VIMRC |
| 7 | " - MOVING_WITH_READLINE | 7 | " MOVING_WITH_READLINE |
| 8 | " - INSERT_SURROUNDING | 8 | " INSERT_SURROUNDING |
| 9 | " - JUMP_TO_TABS_WITH_ALT | 9 | " JUMP_TO_TABS_WITH_ALT |
| 10 | " - MANAGE_TABS | 10 | " MANAGE_TABS |
| 11 | " - MANAGE_BUFFERS | 11 | " MANAGE_BUFFERS |
| 12 | " - SURROURD_WITH_CHAR | 12 | " FOLDING |
| 13 | " - REDIRECTION_WITH_BUFFER | 13 | " SURROURD_WITH_CHAR |
| 14 | " - QUICK_SUBSTITUTE | 14 | " REDIRECTION_WITH_BUFFER |
| 15 | " - 终端支持 | 15 | " QUICK_SUBSTITUTE |
| 16 | " - 编译运行 | 16 | " 终端支持 |
| 17 | " 编译运行 | ||
| 17 | " | 18 | " |
| 18 | "====================================================================== | 19 | "====================================================================== |
| 19 | " vim: set ts=4 sw=4 tw=78 noet : | 20 | " vim: set ts=4 sw=4 tw=78 noet : |
| @@ -54,12 +55,6 @@ nmap cq :cq<CR> | |||
| 54 | " Switch wrap | 55 | " Switch wrap |
| 55 | nmap <leader>W :set wrap!<CR> | 56 | nmap <leader>W :set wrap!<CR> |
| 56 | 57 | ||
| 57 | " Show fold level when it changes | ||
| 58 | nnoremap zm zm:set foldlevel<CR> | ||
| 59 | nnoremap zr zr:set foldlevel<CR> | ||
| 60 | " Use l to open fold | ||
| 61 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | ||
| 62 | |||
| 63 | " :W sudo saves the file | 58 | " :W sudo saves the file |
| 64 | " (useful for handling the permission-denied error) | 59 | " (useful for handling the permission-denied error) |
| 65 | command! W execute 'w !sudo -S tee %' <bar> edit! | 60 | command! W execute 'w !sudo -S tee %' <bar> edit! |
| @@ -265,7 +260,6 @@ noremap <leader>l :exe "buffer ".g:lastbuffer<CR> | |||
| 265 | 260 | ||
| 266 | " set filetype | 261 | " set filetype |
| 267 | noremap <leader><leader>ft :set filetype= | 262 | noremap <leader><leader>ft :set filetype= |
| 268 | noremap <leader><leader>fm :set foldmethod= | ||
| 269 | 263 | ||
| 270 | " Let <leader>l toggle between this and the last accessed buffer | 264 | " Let <leader>l toggle between this and the last accessed buffer |
| 271 | augroup SaveLastBuffer | 265 | augroup SaveLastBuffer |
| @@ -275,6 +269,23 @@ augroup END | |||
| 275 | 269 | ||
| 276 | 270 | ||
| 277 | "---------------------------------------------------------------------- | 271 | "---------------------------------------------------------------------- |
| 272 | " FOLDING | ||
| 273 | "---------------------------------------------------------------------- | ||
| 274 | |||
| 275 | " Set foldmethod | ||
| 276 | noremap <leader><leader>fm :set foldmethod= | ||
| 277 | |||
| 278 | " Show fold level when it changes | ||
| 279 | nnoremap zm zm:set foldlevel<CR> | ||
| 280 | nnoremap zr zr:set foldlevel<CR> | ||
| 281 | " Use l to open fold | ||
| 282 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | ||
| 283 | " Open fold in next line | ||
| 284 | nnoremap <expr> zo foldclosed('.') == -1 ? 'jzo' : 'zo' | ||
| 285 | nnoremap <expr> zO foldclosed('.') == -1 ? 'jzO' : 'zO' | ||
| 286 | |||
| 287 | |||
| 288 | "---------------------------------------------------------------------- | ||
| 278 | " SURROURD_WITH_CHAR | 289 | " SURROURD_WITH_CHAR |
| 279 | "---------------------------------------------------------------------- | 290 | "---------------------------------------------------------------------- |
| 280 | vnoremap S sa | 291 | vnoremap S sa |
| @@ -323,26 +334,31 @@ nnoremap <leader>rr :Redir<space> | |||
| 323 | " Press <TAB> n times for area, and <CR> for substitute | 334 | " Press <TAB> n times for area, and <CR> for substitute |
| 324 | "---------------------------------------------------------------------- | 335 | "---------------------------------------------------------------------- |
| 325 | 336 | ||
| 337 | " substitute across file | ||
| 338 | vnoremap <leader>s y:%s//<C-R>0/g<LEFT><LEFT> | ||
| 339 | |||
| 326 | let g:search_not_in_register = 1 | 340 | let g:search_not_in_register = 1 |
| 341 | " When leaving visual mode, resume search_not_in_register | ||
| 342 | autocmd Modechanged [vV\x16]*:* let g:search_not_in_register = 1 | ||
| 343 | |||
| 327 | function! ExpandSelectionBySearch(sep) | 344 | function! ExpandSelectionBySearch(sep) |
| 328 | if g:search_not_in_register | 345 | if g:search_not_in_register |
| 329 | " Save current selection to register s, and keep selection | 346 | " Save current selection to register, and keep selection |
| 330 | execute 'norm "sygv' | 347 | execute 'norm ygv' |
| 331 | let g:search_not_in_register = 0 | 348 | let g:search_not_in_register = 0 |
| 332 | endif | 349 | endif |
| 333 | " Use register s to go to next search, counts/total is displayed in | 350 | " Use register s to go to next search, counts/total is displayed in |
| 334 | " statusline | 351 | " statusline |
| 335 | call feedkeys(a:sep.."\<C-R>s"..a:sep.."e\<CR>") | 352 | call feedkeys(a:sep.."\<C-R>0"..a:sep.."e\<CR>") |
| 336 | endfunction | 353 | endfunction |
| 337 | function! SubstituteBySearch() | 354 | function! SubstituteBySearch() |
| 338 | " Apply current search for default substitute text | 355 | " Apply current search for default substitute text |
| 339 | call feedkeys(":s//\<C-R>s/g\<Left>\<Left>") | 356 | call feedkeys(":s//\<C-R>0/g\<Left>\<Left>") |
| 340 | endfunction | 357 | endfunction |
| 358 | |||
| 341 | vnoremap <TAB> <Cmd>call ExpandSelectionBySearch('/')<CR> | 359 | vnoremap <TAB> <Cmd>call ExpandSelectionBySearch('/')<CR> |
| 342 | vnoremap <S-TAB> <Cmd>call ExpandSelectionBySearch('?')<CR> | 360 | vnoremap <S-TAB> <Cmd>call ExpandSelectionBySearch('?')<CR> |
| 343 | vnoremap <CR> <Cmd>call SubstituteBySearch()<CR> | 361 | vnoremap <CR> <Cmd>call SubstituteBySearch()<CR> |
| 344 | " When leaving visual mode, resume search_not_in_register | ||
| 345 | autocmd Modechanged [vV\x16]*:* let g:search_not_in_register = 1 | ||
| 346 | 362 | ||
| 347 | 363 | ||
| 348 | "---------------------------------------------------------------------- | 364 | "---------------------------------------------------------------------- |