aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-07-13 01:04:26 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-07-13 01:04:26 +0800
commite971b4711d06710ec59e681053f5973b911af85b (patch)
tree1de215fc457f1465dfd18c72922b1ae338ea66aa
parent058fa5ecbf152be3864b3a510aec418b18c35734 (diff)
Update
-rw-r--r--Makefile4
-rw-r--r--vim/init/basic.vim12
-rw-r--r--vim/init/keymaps.vim107
-rw-r--r--vim/lua/options.lua2
4 files changed, 89 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index 6d3a8e0..41d22a8 100644
--- a/Makefile
+++ b/Makefile
@@ -75,8 +75,8 @@ console:
75 75
76task: 76task:
77 ln -sf $(HOME)/.task/taskrc $(HOME)/.taskrc 77 ln -sf $(HOME)/.task/taskrc $(HOME)/.taskrc
78 if [ ! -d "$(HOME)/.task/.git" ]; then 78 if [ ! -d "$(HOME)/.task/.git" ]; then
79 if [ -d "$(HOME)/.task" ]; then rm -rf "$(HOME)/.task"; fi; 79 if [ -d "$(HOME)/.task" ]; then rm -rf "$(HOME)/.task"; fi;
80 git clone --depth 1 vps:~/.task ~/.task; 80 git clone --depth 1 vps:~/.task ~/.task;
81 fi 81 fi
82 82
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
10augroup filetype_vim 10augroup 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
14augroup END 14augroup END
15 15
@@ -35,6 +35,13 @@ filetype plugin indent on
35set autoread 35set autoread
36autocmd FocusGained,BufEnter .* checktime 36autocmd FocusGained,BufEnter .* checktime
37 37
38" spell
39set spell
40set spellfile="/tmp/spell"
41
42" Custom sign from help page :h sign
43sign 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
91set tabstop=8
84set expandtab 92set expandtab
85set softtabstop=-1 93set 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>
52nnoremap <leader>P :r !xsel -ob<CR> 52nnoremap <leader>P :r !xsel -ob<CR>
53vnoremap Y :w !xsel -ib<CR> 53vnoremap Y :w !xsel -ib<CR>
54 54
55" Switch CWD to the directory of the open buffer
56nnoremap cd :cd %:p:h<CR>:pwd<CR>
57" Switch CWD to root git directory
58function! 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
62endfunction
63nnoremap cdg :call CdToGitRepo()<CR>:pwd<CR>
64
65" alias for cd
66nnoremap cdd :cd<space>
67nnoremap cd.. :cd .. <CR>:pwd<CR>
68nnoremap cd... :cd ../.. <CR>:pwd<CR>
69
70" Move one line up and down 55" Move one line up and down
71nnoremap <C-j> ddp 56nnoremap <C-j> ddp
72nnoremap <C-k> ddkP 57nnoremap <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
92nnoremap <expr> <leader><leader>sp ": echo spell "..(echo &spell ? "on" : "off").."<CR>" 77nnoremap <leader><leader>sp :set spell!<CR>:set spell?<CR>
93nnoremap <expr> <leader><leader>sp ": echo spell "
94nnoremap <leader>ss ]s 78nnoremap <leader>ss ]s
95nnoremap <leader>S [s 79nnoremap <leader>S [s
96 80
@@ -102,7 +86,40 @@ vnoremap Tz :!trans -t zh-TW -b<CR>
102vnoremap Te :!trans -t en-US -b<CR> 86vnoremap Te :!trans -t en-US -b<CR>
103 87
104" }}} 88" }}}
105" MOVE ----------------{{{ 89" WORKING_DIR ----------------{{{
90
91let g:last_path = execute("pwd")
92augroup SaveLatestDir
93 au!
94 autocmd DirChangedPre * let g:last_path = split(execute('pwd'), "\n")[0]
95augroup END
96
97" Switch CWD to the directory of the open buffer
98nnoremap cd :cd %:p:h<CR>:pwd<CR>
99
100nnoremap cd<space> :cd<space>
101nnoremap cdg :call CdToGitRepo()<CR>:pwd<CR>
102noremap <C-[> :cd ..<CR>:pwd<CR>
103noremap <C-]> :call InCaseCdToLatestDir()<CR>
104
105" Switch CWD to root git directory
106function! 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
110endfunction
111
112function! InCaseCdToLatestDir()
113 try
114 execute "norm! \<C-]>"
115 catch
116 cd -
117 pwd
118 endtry
119endfunction
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)
108noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j') 125noremap <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
375noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> 392noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR>
376noremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> 393noremap <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>
379nnoremap zm zm:set foldlevel<CR> 396nnoremap zm zm:set foldlevel<CR>
380nnoremap zr zr:set foldlevel<CR> 397nnoremap zr zr:set foldlevel<CR>
381 398
399" Fold all except selection
400vnoremap zF :<C-u>call UnfoldSelectionOnly()<CR>
401" Resume
402nnoremap zF :<C-u>call ResumeFoldmethod()<CR>zv
403
404" Select current fold
405xnoremap iz :<C-U>silent!normal![zV]z<CR>
406
407" Use l to open fold
408nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo'
409
410" Open fold in next line
411nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo'
412nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO'
413
382" Fold file except selection 414" Fold file except selection
383let g:original_foldmethod = "" 415let b:original_foldmethod = ""
384function! UnfoldSelectionOnly() 416function! 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()
391endfunction 423endfunction
392function! ResumeFoldmethod() 424function! 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
395endfunc 427endfunc
396vnoremap zF :<C-u>call UnfoldSelectionOnly()<CR>
397nnoremap zF :<C-u>call ResumeFoldmethod()<CR>
398
399" Use l to open fold
400nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo'
401
402" Open fold in next line
403nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo'
404nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO'
405 428
406" }}} 429" }}}
407" HIGHLIGHT ----------------{{{ 430" HIGHLIGHT ----------------{{{
@@ -449,14 +472,28 @@ vnoremap ( <ESC>`<i(<ESC>`>la)<ESC>
449vnoremap [ <ESC>`<i[<ESC>`>la]<ESC> 472vnoremap [ <ESC>`<i[<ESC>`>la]<ESC>
450vnoremap { <ESC>`<i{<ESC>`>la}<ESC> 473vnoremap { <ESC>`<i{<ESC>`>la}<ESC>
451vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> 474vnoremap ` <ESC>`<i`<ESC>`>la`<ESC>
452vnoremap <space> <ESC>`<i<space><ESC>`>la<space><ESC>
453vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> 475vnoremap Q <ESC>`<i「<ESC>`>la」<ESC>
454 476
477function! 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
487endfunction
488vnoremap <space> :<C-u>call AddSpaceForSelection()<CR>
489
455" }}} 490" }}}
456" QUICKFIX ----------------{{{ 491" QUICKFIX ----------------{{{
492
457nnoremap <leader>cn :cn<CR> 493nnoremap <leader>cn :cn<CR>
458nnoremap <leader>cp :cp<CR> 494nnoremap <leader>cp :cp<CR>
459nnoremap <leader>cw :cw 10<CR> 495nnoremap <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>
518vnoremap <CR> <Cmd>call SubstituteBySearch()<CR> 555vnoremap <CR> <Cmd>call SubstituteBySearch()<CR>
519 556
520" }}} 557" }}}
558" SIGN ----------------{{{
559
560nnoremap <leader>si :exe ":sign place " .. line('.') .. " line=" .. line('.') .. " name=piet file=" .. expand("%:p")<CR>
561nnoremap <leader>sI :exe ":sign unplace * file=" .. expand("%:p")<CR>
562
563" }}
521" GIT_TIG ----------------{{{ 564" GIT_TIG ----------------{{{
522 565
523let g:tig_explorer_keymap_commit_split = '<C-s>' 566let 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'
22o.termguicolors = true 22o.termguicolors = true
23 23
24o.whichwrap = "b,s" 24o.whichwrap = "b,s"
25
26o.tabstop = 8