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 | ||