diff options
Diffstat (limited to 'vim')
| -rw-r--r-- | vim/init/basic.vim | 12 | ||||
| -rw-r--r-- | vim/init/keymaps.vim | 107 | ||||
| -rw-r--r-- | vim/lua/options.lua | 2 |
3 files changed, 87 insertions, 34 deletions
diff --git a/vim/init/basic.vim b/vim/init/basic.vim index 42dab16..818e996 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | " Usage: type --- for foldmark | 9 | " Usage: type --- for foldmark |
| 10 | augroup filetype_vim | 10 | augroup filetype_vim |
| 11 | autocmd! | 11 | autocmd! |
| 12 | execute "autocmd FileType vim :inoreabbrev <buffer> --- ----------------{".."{{" | 12 | execute "autocmd FileType vim :inoreabbrev <buffer> --- ----------------{".."{{<CR>\" }"."}}" |
| 13 | autocmd FileType vim setlocal foldmethod=marker foldlevel=0 | 13 | autocmd FileType vim setlocal foldmethod=marker foldlevel=0 |
| 14 | augroup END | 14 | augroup END |
| 15 | 15 | ||
| @@ -35,6 +35,13 @@ filetype plugin indent on | |||
| 35 | set autoread | 35 | set autoread |
| 36 | autocmd FocusGained,BufEnter .* checktime | 36 | autocmd FocusGained,BufEnter .* checktime |
| 37 | 37 | ||
| 38 | " spell | ||
| 39 | set spell | ||
| 40 | set spellfile="/tmp/spell" | ||
| 41 | |||
| 42 | " Custom sign from help page :h sign | ||
| 43 | sign define piet text=>> texthl=Search | ||
| 44 | |||
| 38 | " }}} | 45 | " }}} |
| 39 | " VISUAL ----------------{{{ | 46 | " VISUAL ----------------{{{ |
| 40 | 47 | ||
| @@ -79,8 +86,9 @@ set ttimeoutlen=50 | |||
| 79 | " set updatetime=4000 | 86 | " set updatetime=4000 |
| 80 | " autocmd CursorHold * normal! m' | 87 | " autocmd CursorHold * normal! m' |
| 81 | 88 | ||
| 82 | " TAB ----------------{{{ | 89 | " TAB and special Chars ----------------{{{ |
| 83 | 90 | ||
| 91 | set tabstop=8 | ||
| 84 | set expandtab | 92 | set expandtab |
| 85 | set softtabstop=-1 | 93 | set softtabstop=-1 |
| 86 | 94 | ||
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index 0132706..438f925 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
| @@ -52,21 +52,6 @@ map <leader>pp :setlocal paste!<CR> | |||
| 52 | nnoremap <leader>P :r !xsel -ob<CR> | 52 | nnoremap <leader>P :r !xsel -ob<CR> |
| 53 | vnoremap Y :w !xsel -ib<CR> | 53 | vnoremap Y :w !xsel -ib<CR> |
| 54 | 54 | ||
| 55 | " Switch CWD to the directory of the open buffer | ||
| 56 | nnoremap cd :cd %:p:h<CR>:pwd<CR> | ||
| 57 | " Switch CWD to root git directory | ||
| 58 | function! CdToGitRepo() | ||
| 59 | let l:git_dir = finddir('.git', escape(expand('%:p:h'), ' ') . ';') | ||
| 60 | let l:repo = fnameescape(fnamemodify(l:git_dir, ':h')) | ||
| 61 | execute "cd" l:repo | ||
| 62 | endfunction | ||
| 63 | nnoremap cdg :call CdToGitRepo()<CR>:pwd<CR> | ||
| 64 | |||
| 65 | " alias for cd | ||
| 66 | nnoremap cdd :cd<space> | ||
| 67 | nnoremap cd.. :cd .. <CR>:pwd<CR> | ||
| 68 | nnoremap cd... :cd ../.. <CR>:pwd<CR> | ||
| 69 | |||
| 70 | " Move one line up and down | 55 | " Move one line up and down |
| 71 | nnoremap <C-j> ddp | 56 | nnoremap <C-j> ddp |
| 72 | nnoremap <C-k> ddkP | 57 | nnoremap <C-k> ddkP |
| @@ -89,8 +74,7 @@ nnoremap <C-k> ddkP | |||
| 89 | " execute "set <M-h>=\eh" | 74 | " execute "set <M-h>=\eh" |
| 90 | 75 | ||
| 91 | " Spell | 76 | " Spell |
| 92 | nnoremap <expr> <leader><leader>sp ": echo spell "..(echo &spell ? "on" : "off").."<CR>" | 77 | nnoremap <leader><leader>sp :set spell!<CR>:set spell?<CR> |
| 93 | nnoremap <expr> <leader><leader>sp ": echo spell " | ||
| 94 | nnoremap <leader>ss ]s | 78 | nnoremap <leader>ss ]s |
| 95 | nnoremap <leader>S [s | 79 | nnoremap <leader>S [s |
| 96 | 80 | ||
| @@ -102,7 +86,40 @@ vnoremap Tz :!trans -t zh-TW -b<CR> | |||
| 102 | vnoremap Te :!trans -t en-US -b<CR> | 86 | vnoremap Te :!trans -t en-US -b<CR> |
| 103 | 87 | ||
| 104 | " }}} | 88 | " }}} |
| 105 | " MOVE ----------------{{{ | 89 | " WORKING_DIR ----------------{{{ |
| 90 | |||
| 91 | let g:last_path = execute("pwd") | ||
| 92 | augroup SaveLatestDir | ||
| 93 | au! | ||
| 94 | autocmd DirChangedPre * let g:last_path = split(execute('pwd'), "\n")[0] | ||
| 95 | augroup END | ||
| 96 | |||
| 97 | " Switch CWD to the directory of the open buffer | ||
| 98 | nnoremap cd :cd %:p:h<CR>:pwd<CR> | ||
| 99 | |||
| 100 | nnoremap cd<space> :cd<space> | ||
| 101 | nnoremap cdg :call CdToGitRepo()<CR>:pwd<CR> | ||
| 102 | noremap <C-[> :cd ..<CR>:pwd<CR> | ||
| 103 | noremap <C-]> :call InCaseCdToLatestDir()<CR> | ||
| 104 | |||
| 105 | " Switch CWD to root git directory | ||
| 106 | function! CdToGitRepo() | ||
| 107 | let l:git_dir = finddir('.git', escape(expand('%:p:h'), ' ') . ';') | ||
| 108 | let l:repo = fnameescape(fnamemodify(l:git_dir, ':h')) | ||
| 109 | execute "cd" l:repo | ||
| 110 | endfunction | ||
| 111 | |||
| 112 | function! InCaseCdToLatestDir() | ||
| 113 | try | ||
| 114 | execute "norm! \<C-]>" | ||
| 115 | catch | ||
| 116 | cd - | ||
| 117 | pwd | ||
| 118 | endtry | ||
| 119 | endfunction | ||
| 120 | |||
| 121 | " }}} | ||
| 122 | " MOTION ----------------{{{ | ||
| 106 | 123 | ||
| 107 | " j/k will move virtual lines (lines that wrap) | 124 | " j/k will move virtual lines (lines that wrap) |
| 108 | noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j') | 125 | noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j') |
| @@ -371,7 +388,7 @@ endfunc | |||
| 371 | " }}} | 388 | " }}} |
| 372 | " FOLD ----------------{{{ | 389 | " FOLD ----------------{{{ |
| 373 | 390 | ||
| 374 | " Set foldmethod | 391 | " Set fold options |
| 375 | noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> | 392 | noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> |
| 376 | noremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> | 393 | noremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> |
| 377 | 394 | ||
| @@ -379,11 +396,26 @@ noremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> | |||
| 379 | nnoremap zm zm:set foldlevel<CR> | 396 | nnoremap zm zm:set foldlevel<CR> |
| 380 | nnoremap zr zr:set foldlevel<CR> | 397 | nnoremap zr zr:set foldlevel<CR> |
| 381 | 398 | ||
| 399 | " Fold all except selection | ||
| 400 | vnoremap zF :<C-u>call UnfoldSelectionOnly()<CR> | ||
| 401 | " Resume | ||
| 402 | nnoremap zF :<C-u>call ResumeFoldmethod()<CR>zv | ||
| 403 | |||
| 404 | " Select current fold | ||
| 405 | xnoremap iz :<C-U>silent!normal![zV]z<CR> | ||
| 406 | |||
| 407 | " Use l to open fold | ||
| 408 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | ||
| 409 | |||
| 410 | " Open fold in next line | ||
| 411 | nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo' | ||
| 412 | nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' | ||
| 413 | |||
| 382 | " Fold file except selection | 414 | " Fold file except selection |
| 383 | let g:original_foldmethod = "" | 415 | let b:original_foldmethod = "" |
| 384 | function! UnfoldSelectionOnly() | 416 | function! UnfoldSelectionOnly() |
| 385 | echo 'Unfold'..&foldmethod | 417 | echo 'Unfold'..&foldmethod |
| 386 | let g:original_foldmethod = &foldmethod | 418 | let b:original_foldmethod = &foldmethod |
| 387 | let &foldmethod = "manual" | 419 | let &foldmethod = "manual" |
| 388 | norm! zE | 420 | norm! zE |
| 389 | execute "0,'<-1fold" | 421 | execute "0,'<-1fold" |
| @@ -391,17 +423,8 @@ function! UnfoldSelectionOnly() | |||
| 391 | endfunction | 423 | endfunction |
| 392 | function! ResumeFoldmethod() | 424 | function! ResumeFoldmethod() |
| 393 | norm! zE | 425 | norm! zE |
| 394 | let &foldmethod = g:original_foldmethod ? g:original_foldmethod : "indent" | 426 | let &foldmethod = empty(b:original_foldmethod) ? "indent" : b:original_foldmethod |
| 395 | endfunc | 427 | endfunc |
| 396 | vnoremap zF :<C-u>call UnfoldSelectionOnly()<CR> | ||
| 397 | nnoremap zF :<C-u>call ResumeFoldmethod()<CR> | ||
| 398 | |||
| 399 | " Use l to open fold | ||
| 400 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | ||
| 401 | |||
| 402 | " Open fold in next line | ||
| 403 | nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo' | ||
| 404 | nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' | ||
| 405 | 428 | ||
| 406 | " }}} | 429 | " }}} |
| 407 | " HIGHLIGHT ----------------{{{ | 430 | " HIGHLIGHT ----------------{{{ |
| @@ -449,14 +472,28 @@ vnoremap ( <ESC>`<i(<ESC>`>la)<ESC> | |||
| 449 | vnoremap [ <ESC>`<i[<ESC>`>la]<ESC> | 472 | vnoremap [ <ESC>`<i[<ESC>`>la]<ESC> |
| 450 | vnoremap { <ESC>`<i{<ESC>`>la}<ESC> | 473 | vnoremap { <ESC>`<i{<ESC>`>la}<ESC> |
| 451 | vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> | 474 | vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> |
| 452 | vnoremap <space> <ESC>`<i<space><ESC>`>la<space><ESC> | ||
| 453 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> | 475 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> |
| 454 | 476 | ||
| 477 | function! AddSpaceForSelection() | ||
| 478 | if line("'<") == line("'>") | ||
| 479 | call cursor('.', col("'<")) | ||
| 480 | execute "norm! i\<space>" | ||
| 481 | call cursor('.', col("'>")+1) | ||
| 482 | execute "norm! a\<space>" | ||
| 483 | else | ||
| 484 | '< norm! O | ||
| 485 | '> norm! o | ||
| 486 | endif | ||
| 487 | endfunction | ||
| 488 | vnoremap <space> :<C-u>call AddSpaceForSelection()<CR> | ||
| 489 | |||
| 455 | " }}} | 490 | " }}} |
| 456 | " QUICKFIX ----------------{{{ | 491 | " QUICKFIX ----------------{{{ |
| 492 | |||
| 457 | nnoremap <leader>cn :cn<CR> | 493 | nnoremap <leader>cn :cn<CR> |
| 458 | nnoremap <leader>cp :cp<CR> | 494 | nnoremap <leader>cp :cp<CR> |
| 459 | nnoremap <leader>cw :cw 10<CR> | 495 | nnoremap <leader>cw :cw 10<CR> |
| 496 | |||
| 460 | " }}} | 497 | " }}} |
| 461 | " REDIRECTION_WITH_BUFFER ----------------{{{ | 498 | " REDIRECTION_WITH_BUFFER ----------------{{{ |
| 462 | 499 | ||
| @@ -518,6 +555,12 @@ vnoremap <S-TAB> <Cmd>call ExpandSelectionBySearch('?')<CR> | |||
| 518 | vnoremap <CR> <Cmd>call SubstituteBySearch()<CR> | 555 | vnoremap <CR> <Cmd>call SubstituteBySearch()<CR> |
| 519 | 556 | ||
| 520 | " }}} | 557 | " }}} |
| 558 | " SIGN ----------------{{{ | ||
| 559 | |||
| 560 | nnoremap <leader>si :exe ":sign place " .. line('.') .. " line=" .. line('.') .. " name=piet file=" .. expand("%:p")<CR> | ||
| 561 | nnoremap <leader>sI :exe ":sign unplace * file=" .. expand("%:p")<CR> | ||
| 562 | |||
| 563 | " }} | ||
| 521 | " GIT_TIG ----------------{{{ | 564 | " GIT_TIG ----------------{{{ |
| 522 | 565 | ||
| 523 | let g:tig_explorer_keymap_commit_split = '<C-s>' | 566 | let g:tig_explorer_keymap_commit_split = '<C-s>' |
diff --git a/vim/lua/options.lua b/vim/lua/options.lua index 1c2b881..64b95a1 100644 --- a/vim/lua/options.lua +++ b/vim/lua/options.lua | |||
| @@ -22,3 +22,5 @@ o.completeopt = 'menuone,noselect' | |||
| 22 | o.termguicolors = true | 22 | o.termguicolors = true |
| 23 | 23 | ||
| 24 | o.whichwrap = "b,s" | 24 | o.whichwrap = "b,s" |
| 25 | |||
| 26 | o.tabstop = 8 | ||