diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-07-11 23:49:29 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-07-11 23:49:29 +0800 |
commit | 058fa5ecbf152be3864b3a510aec418b18c35734 (patch) | |
tree | f72f404dd8fc76a6cb56b8106f7840c0f7dd0352 /vim/init | |
parent | 1f7d36d236965aa0f6ddff71321ebc755b79154c (diff) |
Update
Diffstat (limited to 'vim/init')
-rw-r--r-- | vim/init/basic.vim | 48 | ||||
-rw-r--r-- | vim/init/config.vim | 48 | ||||
-rw-r--r-- | vim/init/keymaps.vim | 188 | ||||
-rw-r--r-- | vim/init/style.vim | 1 |
4 files changed, 170 insertions, 115 deletions
diff --git a/vim/init/basic.vim b/vim/init/basic.vim index c066f07..42dab16 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim | |||
@@ -76,19 +76,17 @@ set shiftwidth=2 | |||
76 | set cindent | 76 | set cindent |
77 | set ttimeout | 77 | set ttimeout |
78 | set ttimeoutlen=50 | 78 | set ttimeoutlen=50 |
79 | " set updatetime=1000 | 79 | " set updatetime=4000 |
80 | " autocmd CursorHold * normal! m' | 80 | " autocmd CursorHold * normal! m' |
81 | 81 | ||
82 | imap <C-c> <Esc>l | ||
83 | |||
84 | " TAB ----------------{{{ | 82 | " TAB ----------------{{{ |
85 | 83 | ||
86 | set expandtab | 84 | set expandtab |
87 | set softtabstop=-1 | 85 | set softtabstop=-1 |
88 | 86 | ||
89 | " 顯示分隔符號 | 87 | " Invisible chars |
90 | set list | 88 | set nolist |
91 | set listchars=tab:▷,extends:>,precedes:< | 89 | set listchars=tab:»,extends:>,precedes:< |
92 | 90 | ||
93 | " }}} | 91 | " }}} |
94 | 92 | ||
@@ -118,13 +116,27 @@ augroup vimStartup | |||
118 | " (it's likely a different one than last time). | 116 | " (it's likely a different one than last time). |
119 | autocmd BufReadPost * | 117 | autocmd BufReadPost * |
120 | \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' | 118 | \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit' |
121 | \ | exe "normal! g`\"zv" | 119 | \ | try | silent execute 'normal! g`"zv' | endtry |
122 | \ | endif | 120 | \ | endif |
123 | augroup END | 121 | augroup END |
124 | 122 | ||
125 | " }}} | 123 | " }}} |
126 | 124 | ||
127 | " }}} | 125 | " }}} |
126 | " FOLD ----------------{{{ | ||
127 | set foldenable " Allow fold | ||
128 | set foldmethod=indent " Fold contents by indent | ||
129 | set foldlevel=2 | ||
130 | set fillchars+=foldopen:▽,foldsep:│,foldclose:▶ | ||
131 | let g:defaut_foldcolumn = "" | ||
132 | if has('nvim') | ||
133 | let g:defaut_foldcolumn = "auto:5" | ||
134 | else | ||
135 | let g:defaut_foldcolumn = 5 | ||
136 | endif | ||
137 | let &foldcolumn = g:defaut_foldcolumn | ||
138 | |||
139 | " }}} | ||
128 | " ENCODING_PREFERENCE ----------------{{{ | 140 | " ENCODING_PREFERENCE ----------------{{{ |
129 | 141 | ||
130 | if has('multi_byte') | 142 | if has('multi_byte') |
@@ -135,13 +147,6 @@ if has('multi_byte') | |||
135 | endif | 147 | endif |
136 | 148 | ||
137 | " }}} | 149 | " }}} |
138 | " FOLD ----------------{{{ | ||
139 | |||
140 | set foldenable " Allow fold | ||
141 | set foldmethod=indent " Fold contents by indent | ||
142 | set foldlevel=2 | ||
143 | |||
144 | " }}} | ||
145 | " BACKUP ----------------{{{ | 150 | " BACKUP ----------------{{{ |
146 | 151 | ||
147 | " Allow backup | 152 | " Allow backup |
@@ -162,13 +167,6 @@ set writebackup | |||
162 | syntax enable | 167 | syntax enable |
163 | set conceallevel=1 | 168 | set conceallevel=1 |
164 | 169 | ||
165 | function! GetHighlightGroupName() | ||
166 | let l:syntaxID = synID(line('.'), col('.'), 1) | ||
167 | let l:groupName = synIDattr(l:syntaxID, 'name') | ||
168 | echo "Highlight Group Name: " . l:groupName | ||
169 | endfunction | ||
170 | nnoremap <leader>H :call GetHighlightGroupName()<CR> | ||
171 | |||
172 | " Defualt highlight for matched parenthesis is so weird in many colorscheme | 170 | " Defualt highlight for matched parenthesis is so weird in many colorscheme |
173 | " Why the background color is lighter than my caret !? | 171 | " Why the background color is lighter than my caret !? |
174 | " highlight MatchParen ctermfg=NONE ctermbg=darkgrey cterm=NONE | 172 | " highlight MatchParen ctermfg=NONE ctermbg=darkgrey cterm=NONE |
@@ -178,14 +176,6 @@ highlight LuaParen ctermfg=NONE ctermbg=darkgrey cterm=NONE | |||
178 | highlight ExtraWhitespace ctermbg=red guibg=red | 176 | highlight ExtraWhitespace ctermbg=red guibg=red |
179 | match ExtraWhitespace /\s\+$/ | 177 | match ExtraWhitespace /\s\+$/ |
180 | 178 | ||
181 | " Persist visualized lines | ||
182 | " define line highlight color | ||
183 | highlight MultiLineHighlight ctermbg=LightYellow guibg=LightYellow ctermfg=Black guifg=Black | ||
184 | " highlight the current line | ||
185 | nnoremap <silent> <leader>gh :call matchadd('MultiLineHighlight', '\%'.line('.').'l')<CR> | ||
186 | " clear all the highlighted lines | ||
187 | nnoremap <silent> <leader>gH :call clearmatches()<CR> | ||
188 | |||
189 | " }}} | 179 | " }}} |
190 | " MISC ----------------{{{ | 180 | " MISC ----------------{{{ |
191 | 181 | ||
diff --git a/vim/init/config.vim b/vim/init/config.vim index 903d8a0..4e1c06c 100644 --- a/vim/init/config.vim +++ b/vim/init/config.vim | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | " Unnamed Buffer ----------------{{{ | 6 | " Unnamed Buffer ----------------{{{ |
7 | 7 | ||
8 | " Automatically delete unnamed empty buffer when leaving | ||
8 | augroup DeleteUnnamedEmptBuffer! | 9 | augroup DeleteUnnamedEmptBuffer! |
9 | au! | 10 | au! |
10 | au BufLeave {} if getline(1, '$') == [''] | setlocal bufhidden=wipe | endif | 11 | au BufLeave {} if getline(1, '$') == [''] | setlocal bufhidden=wipe | endif |
@@ -15,15 +16,14 @@ augroup END | |||
15 | 16 | ||
16 | augroup TerminalSize | 17 | augroup TerminalSize |
17 | au! | 18 | au! |
18 | function! LayoutForSmall() | 19 | function! LayoutForSmallTerminal() |
19 | echo 'vim resized' | 20 | if &lines < 19 |
20 | if &lines < 18 | 21 | silent! set cmdheight=0 laststatus=0 showtabline=0 signcolumn=no nowrap scrolloff=1 |
21 | set cmdheight=0 laststatus=0 showtabline=0 signcolumn=no nowrap scrolloff=1 | ||
22 | else | 22 | else |
23 | set cmdheight& laststatus& showtabline=2 signcolumn=yes scrolloff=3 | 23 | silent! set cmdheight& laststatus& showtabline=2 signcolumn=yes scrolloff=3 |
24 | endif | 24 | endif |
25 | endfunction | 25 | endfunction |
26 | autocmd VimResized * call LayoutForSmall() | 26 | autocmd VimEnter,VimResized * call LayoutForSmallTerminal() |
27 | augroup END | 27 | augroup END |
28 | 28 | ||
29 | " }}} | 29 | " }}} |
@@ -144,24 +144,28 @@ augroup InitFileTypes | |||
144 | autocmd BufReadPost * call <SID>ApplyShebang() | 144 | autocmd BufReadPost * call <SID>ApplyShebang() |
145 | " }}} | 145 | " }}} |
146 | " Markdown ----------------{{{ | 146 | " Markdown ----------------{{{ |
147 | au FileType markdown setlocal wrap | 147 | |
148 | au FileType markdown set sw=2 ts=2 | 148 | augroup Config_Markdown |
149 | " Fold by heading level | 149 | au! |
150 | function! MarkdownLevel() | 150 | au FileType markdown setlocal wrap sw=2 ts=2 |
151 | let hash_num = matchstr(getline(v:lnum), '^#\+') | 151 | au FileType markdown setlocal foldexpr=MarkdownLevel() foldmethod=expr |
152 | let hash_num_at_top = matchstr(getline(v:lnum-1), '^#\+') | 152 | |
153 | if empty(hash_num) | 153 | " Fold by heading level |
154 | if empty(hash_num_at_top) | 154 | function! MarkdownLevel() |
155 | return "=" | 155 | let hash_num = matchstr(getline(v:lnum), '^#\+') |
156 | let hash_num_at_top = matchstr(getline(v:lnum-1), '^#\+') | ||
157 | if empty(hash_num) | ||
158 | if empty(hash_num_at_top) | ||
159 | return "=" | ||
160 | else | ||
161 | return ">"..(len(hash_num_at_top)) | ||
162 | endif | ||
156 | else | 163 | else |
157 | return ">"..(len(hash_num_at_top)) | 164 | return len(hash_num) - 1 |
158 | endif | 165 | endif |
159 | else | 166 | endfunction |
160 | return len(hash_num)-1 | 167 | |
161 | endif | 168 | augroup END |
162 | endfunction | ||
163 | au FileType markdown setlocal foldexpr=MarkdownLevel() | ||
164 | au FileType markdown setlocal foldmethod=expr | ||
165 | 169 | ||
166 | " }}} | 170 | " }}} |
167 | " HTML ----------------{{{ | 171 | " HTML ----------------{{{ |
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index f71ec7c..0132706 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
@@ -7,6 +7,9 @@ | |||
7 | " Space for searching | 7 | " Space for searching |
8 | map <space> / | 8 | map <space> / |
9 | 9 | ||
10 | " Escape normal mode by <C-c> | ||
11 | imap <C-c> <Esc>l | ||
12 | |||
10 | " Search for selected test | 13 | " Search for selected test |
11 | vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR> | 14 | vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR> |
12 | 15 | ||
@@ -23,10 +26,8 @@ nmap <leader>w :w!<CR> | |||
23 | " (useful for handling the permission-denied error) | 26 | " (useful for handling the permission-denied error) |
24 | command! W execute 'w !sudo -S tee %' <bar> edit! | 27 | command! W execute 'w !sudo -S tee %' <bar> edit! |
25 | 28 | ||
26 | " Fast quit with error | 29 | " Quit |
27 | nmap <leader>q :q<CR> | 30 | nmap <leader>q :q<CR> |
28 | |||
29 | " Fast quit with error | ||
30 | nmap cq :cq<CR> | 31 | nmap cq :cq<CR> |
31 | 32 | ||
32 | " Remap <CR> in Quickfix, Cmdwin Location list | 33 | " Remap <CR> in Quickfix, Cmdwin Location list |
@@ -88,7 +89,8 @@ nnoremap <C-k> ddkP | |||
88 | " execute "set <M-h>=\eh" | 89 | " execute "set <M-h>=\eh" |
89 | 90 | ||
90 | " Spell | 91 | " Spell |
91 | nnoremap <leader><leader>sp :set spell!<CR> | 92 | nnoremap <expr> <leader><leader>sp ": echo spell "..(echo &spell ? "on" : "off").."<CR>" |
93 | nnoremap <expr> <leader><leader>sp ": echo spell " | ||
92 | nnoremap <leader>ss ]s | 94 | nnoremap <leader>ss ]s |
93 | nnoremap <leader>S [s | 95 | nnoremap <leader>S [s |
94 | 96 | ||
@@ -190,6 +192,10 @@ nnoremap <leader>ee :edit $MYVIMRC<CR> | |||
190 | " Set options | 192 | " Set options |
191 | noremap <leader>st :set<space> | 193 | noremap <leader>st :set<space> |
192 | noremap <leader><leader>ft :<C-\>e'set filetype='..&filetype<CR> | 194 | noremap <leader><leader>ft :<C-\>e'set filetype='..&filetype<CR> |
195 | noremap <leader><leader>li :set list!<CR> | ||
196 | noremap <leader><leader>sw :<C-\>e'set shiftwidth='..&shiftwidth<CR> | ||
197 | noremap <leader><leader>nu :set number!<CR> | ||
198 | noremap <leader><leader>ru :set relativenumber!<CR> | ||
193 | 199 | ||
194 | " Open a new buffer | 200 | " Open a new buffer |
195 | nmap <leader>B :enew<CR> | 201 | nmap <leader>B :enew<CR> |
@@ -213,43 +219,53 @@ function! ToggleQuit() | |||
213 | endfunction | 219 | endfunction |
214 | nnoremap <leader><leader>gl :call ToggleQuit()<CR> | 220 | nnoremap <leader><leader>gl :call ToggleQuit()<CR> |
215 | 221 | ||
216 | function! CheckSave() | 222 | function! CloseBufferSafely() |
217 | if &modified | 223 | if &modified |
218 | let answer = confirm("Save changes?", "&Yes\n&No\n&Cancel") | 224 | let answer = confirm("Save changes?", "&Yes\n&No\n&Cancel") |
219 | if answer == 1 | write | endif | 225 | if answer == 1 | write | endif |
220 | if answer == 3 | return | endif | 226 | if answer == 3 | return | endif |
221 | endif | 227 | endif |
222 | 228 | ||
223 | bdelete! | 229 | let bufs = getbufinfo({'buflisted': 1}) |
224 | 230 | if len(bufs) == 1 | |
225 | endfunction | 231 | bdelete! |
226 | func! QuitWithCheck() | ||
227 | if g:quitVimWhenPressingCtrlC | ||
228 | silent! quit | ||
229 | else | 232 | else |
230 | echo "Press <leader><leader>gl to allow quit with <C-c>" | 233 | b# | bd! # |
231 | endif | 234 | endif |
235 | endfunction | ||
236 | func! QuitWithCheck() | ||
237 | if g:quitVimWhenPressingCtrlC | ||
238 | silent! quit | ||
239 | else | ||
240 | echo "Press <leader><leader>gl to allow quit with <C-c>" | ||
241 | endif | ||
232 | endfunc | 242 | endfunc |
233 | function! Bye() | 243 | function! Bye() |
234 | let windows = gettabinfo(tabpagenr())[0]['windows'] | 244 | let windows = gettabinfo(tabpagenr())[0]['windows'] |
245 | try | ||
235 | let bufs = gettabinfo(tabpagenr())[0]['variables']['bufs'] | 246 | let bufs = gettabinfo(tabpagenr())[0]['variables']['bufs'] |
236 | 247 | catch | |
237 | if len(windows) == 1 && len(bufs) == 1 | 248 | let bufs = getbufinfo({'buflisted': 1}) |
238 | call QuitWithCheck() | 249 | endtry |
239 | elseif &diff | 250 | |
240 | call CloseBuffersForDiff() | 251 | if len(windows) == 1 && len(bufs) == 1 |
241 | else | 252 | call QuitWithCheck() |
242 | call CheckSave() | 253 | elseif &diff |
243 | endif | 254 | call CloseBuffersForDiff() |
255 | elseif len(windows) >1 | ||
256 | quit | ||
257 | else | ||
258 | silent! call CloseBufferSafely() | ||
259 | endif | ||
244 | endfunction | 260 | endfunction |
245 | nnoremap <silent> <C-c> :call Bye()<CR> | 261 | nnoremap <silent> <C-c> :call Bye()<CR> |
246 | 262 | ||
247 | "}}} | 263 | |
248 | " Diff Mode ----------------{{{ | 264 | " Diff Mode ---------------- |
249 | 265 | ||
250 | function! CloseBuffersForDiff() | 266 | function! CloseBuffersForDiff() |
251 | windo | if &diff && &buftype == "nofile" | bdelete | endif | 267 | windo | if &diff && &buftype == "nofile" | bdelete | endif |
252 | norm! zv | 268 | norm! zv |
253 | endfunction | 269 | endfunction |
254 | 270 | ||
255 | command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d_ | 271 | command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d_ |
@@ -257,25 +273,25 @@ command! DiffOrig vert new | set buftype=nofile nobuflisted | read ++edit # | 0d | |||
257 | 273 | ||
258 | " Uset <C-w>d to toggle Diff mode | 274 | " Uset <C-w>d to toggle Diff mode |
259 | function! s:SwitchDiff() | 275 | function! s:SwitchDiff() |
260 | if &diff | 276 | if &diff |
261 | call CloseBuffersForDiff() | 277 | call CloseBuffersForDiff() |
262 | else | 278 | else |
263 | DiffOrig | 279 | DiffOrig |
264 | endif | 280 | endif |
265 | endfunction | 281 | endfunction |
266 | com! SwitchDiff call s:SwitchDiff() | 282 | com! SwitchDiff call s:SwitchDiff() |
267 | nnoremap <C-w>d <Cmd>silent! SwitchDiff<CR> | 283 | nnoremap <C-w>d <Cmd>silent! SwitchDiff<CR> |
268 | 284 | ||
269 | function! s:SwitchDiffForGitHEAD() | 285 | function! s:SwitchDiffForGitHEAD() |
270 | norm cdg | 286 | norm cdg |
271 | if &diff | 287 | if &diff |
272 | windo | if &buftype == "nofile" | bdelete | endif | 288 | windo | if &buftype == "nofile" | bdelete | endif |
273 | norm! zv | 289 | norm! zv |
274 | else | 290 | else |
275 | vert new | set buftype=nofile nobuflisted | 291 | vert new | set buftype=nofile nobuflisted |
276 | read !git show HEAD:# | 292 | read !git show HEAD:# |
277 | 0d_ | diffthis | wincmd p | diffthis | 293 | 0d_ | diffthis | wincmd p | diffthis |
278 | endif | 294 | endif |
279 | endfunction | 295 | endfunction |
280 | command! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD() | 296 | command! SwitchDiffForGitHEAD call s:SwitchDiffForGitHEAD() |
281 | nnoremap <C-w>D <Cmd>silent! SwitchDiffForGitHEAD<CR> | 297 | nnoremap <C-w>D <Cmd>silent! SwitchDiffForGitHEAD<CR> |
@@ -301,22 +317,22 @@ inoremap <m-J> <esc><c-w>j | |||
301 | inoremap <m-K> <esc><c-w>k | 317 | inoremap <m-K> <esc><c-w>k |
302 | 318 | ||
303 | if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') | 319 | if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') |
304 | " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 | 320 | " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 |
305 | " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? | 321 | " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? |
306 | " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 | 322 | " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 |
307 | set termwinkey=<c-_> | 323 | set termwinkey=<c-_> |
308 | tnoremap <m-H> <c-_>h | 324 | tnoremap <m-H> <c-_>h |
309 | tnoremap <m-L> <c-_>l | 325 | tnoremap <m-L> <c-_>l |
310 | tnoremap <m-J> <c-_>j | 326 | tnoremap <m-J> <c-_>j |
311 | tnoremap <m-K> <c-_>k | 327 | tnoremap <m-K> <c-_>k |
312 | tnoremap <m-q> <c-\><c-n> | 328 | tnoremap <m-q> <c-\><c-n> |
313 | elseif has('nvim') | 329 | elseif has('nvim') |
314 | " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 | 330 | " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 |
315 | tnoremap <m-H> <c-\><c-n><c-w>h | 331 | tnoremap <m-H> <c-\><c-n><c-w>h |
316 | tnoremap <m-L> <c-\><c-n><c-w>l | 332 | tnoremap <m-L> <c-\><c-n><c-w>l |
317 | tnoremap <m-J> <c-\><c-n><c-w>j | 333 | tnoremap <m-J> <c-\><c-n><c-w>j |
318 | tnoremap <m-K> <c-\><c-n><c-w>k | 334 | tnoremap <m-K> <c-\><c-n><c-w>k |
319 | tnoremap <m-q> <c-\><c-n> | 335 | tnoremap <m-q> <c-\><c-n> |
320 | endif | 336 | endif |
321 | " }}} | 337 | " }}} |
322 | " MANAGE_TABS ----------------{{{ | 338 | " MANAGE_TABS ----------------{{{ |
@@ -341,35 +357,44 @@ map <leader>te :tabedit <C-r>=expand("%:p:h")<CR> | |||
341 | 357 | ||
342 | " Tab move functions | 358 | " Tab move functions |
343 | function! Tvab_MoveLeft() | 359 | function! Tvab_MoveLeft() |
344 | let l:tabnr = tabpagenr() - 2 | 360 | let l:tabnr = tabpagenr() - 2 |
345 | if l:tabnr >= 0 | 361 | if l:tabnr >= 0 |
346 | exec 'tabmove '.l:tabnr | 362 | exec 'tabmove '.l:tabnr |
347 | endif | 363 | endif |
348 | endfunc | 364 | endfunc |
349 | function! Tab_MoveRight() | 365 | function! Tab_MoveRight() |
350 | let l:tabnr = tabpagenr() + 1 | 366 | let l:tabnr = tabpagenr() + 1 |
351 | if l:tabnr <= tabpagenr('$') | 367 | if l:tabnr <= tabpagenr('$') |
352 | exec 'tabmove '.l:tabnr | 368 | exec 'tabmove '.l:tabnr |
353 | endif | 369 | endif |
354 | endfunc | 370 | endfunc |
355 | " }}} | 371 | " }}} |
356 | " FOLD ----------------{{{ | 372 | " FOLD ----------------{{{ |
357 | 373 | ||
358 | " Set foldmethod | 374 | " Set foldmethod |
359 | noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> | 375 | noremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> |
376 | noremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> | ||
360 | 377 | ||
361 | " Show fold level when it changes | 378 | " Show fold level when it changes |
362 | nnoremap zm zm:set foldlevel<CR> | 379 | nnoremap zm zm:set foldlevel<CR> |
363 | nnoremap zr zr:set foldlevel<CR> | 380 | nnoremap zr zr:set foldlevel<CR> |
364 | 381 | ||
365 | " Fold file except selection | 382 | " Fold file except selection |
383 | let g:original_foldmethod = "" | ||
366 | function! UnfoldSelectionOnly() | 384 | function! UnfoldSelectionOnly() |
367 | set foldmethod=manual | 385 | echo 'Unfold'..&foldmethod |
386 | let g:original_foldmethod = &foldmethod | ||
387 | let &foldmethod = "manual" | ||
368 | norm! zE | 388 | norm! zE |
369 | execute "0,'<-1fold" | 389 | execute "0,'<-1fold" |
370 | execute "'>+1,$fold" | 390 | execute "'>+1,$fold" |
371 | endfunction | 391 | endfunction |
372 | vnoremap zF :call UnfoldSelectionOnly()<CR> | 392 | function! ResumeFoldmethod() |
393 | norm! zE | ||
394 | let &foldmethod = g:original_foldmethod ? g:original_foldmethod : "indent" | ||
395 | endfunc | ||
396 | vnoremap zF :<C-u>call UnfoldSelectionOnly()<CR> | ||
397 | nnoremap zF :<C-u>call ResumeFoldmethod()<CR> | ||
373 | 398 | ||
374 | " Use l to open fold | 399 | " Use l to open fold |
375 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | 400 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' |
@@ -379,6 +404,36 @@ nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo' | |||
379 | nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' | 404 | nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' |
380 | 405 | ||
381 | " }}} | 406 | " }}} |
407 | " HIGHLIGHT ----------------{{{ | ||
408 | |||
409 | function! HiFile() | ||
410 | let i = 1 | ||
411 | while i <= line("$") | ||
412 | if strlen(getline(i)) > 0 && len(split(getline(i))) > 2 | ||
413 | let w = split(getline(i))[0] | ||
414 | let l:command = "syn match " . w . " /^" . w . "\\s\\+xxx/" | ||
415 | exe l:command | ||
416 | endif | ||
417 | let i += 1 | ||
418 | endwhile | ||
419 | endfunction | ||
420 | |||
421 | function! GetHighlightGroupName() | ||
422 | let l:syntaxID = synID(line('.'), col('.'), 1) | ||
423 | let l:groupName = synIDattr(l:syntaxID, 'name') | ||
424 | echo "Highlight Group Name: " . l:groupName | ||
425 | endfunction | ||
426 | nnoremap <leader>H :call GetHighlightGroupName()<CR> | ||
427 | |||
428 | " Persist visualized lines | ||
429 | " define line highlight color | ||
430 | highlight MultiLineHighlight ctermbg=LightYellow guibg=LightYellow ctermfg=Black guifg=Black | ||
431 | " highlight the current line | ||
432 | nnoremap <silent> <leader>gh :call matchadd('MultiLineHighlight', '\%'.line('.').'l')<CR> | ||
433 | " clear all the highlighted lines | ||
434 | nnoremap <silent> <leader>gH :call clearmatches()<CR> | ||
435 | |||
436 | " }}} | ||
382 | " SURROUND ----------------{{{ | 437 | " SURROUND ----------------{{{ |
383 | 438 | ||
384 | inoremap ' ''<Left> | 439 | inoremap ' ''<Left> |
@@ -398,6 +453,11 @@ vnoremap <space> <ESC>`<i<space><ESC>`>la<space><ESC> | |||
398 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> | 453 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> |
399 | 454 | ||
400 | " }}} | 455 | " }}} |
456 | " QUICKFIX ----------------{{{ | ||
457 | nnoremap <leader>cn :cn<CR> | ||
458 | nnoremap <leader>cp :cp<CR> | ||
459 | nnoremap <leader>cw :cw 10<CR> | ||
460 | " }}} | ||
401 | " REDIRECTION_WITH_BUFFER ----------------{{{ | 461 | " REDIRECTION_WITH_BUFFER ----------------{{{ |
402 | 462 | ||
403 | " Usage: | 463 | " Usage: |
diff --git a/vim/init/style.vim b/vim/init/style.vim index f2b1a5a..7c65e82 100644 --- a/vim/init/style.vim +++ b/vim/init/style.vim | |||
@@ -8,6 +8,7 @@ | |||
8 | "====================================================================== | 8 | "====================================================================== |
9 | " vim: set ts=4 sw=4 tw=78 noet : | 9 | " vim: set ts=4 sw=4 tw=78 noet : |
10 | 10 | ||
11 | colorscheme desert | ||
11 | 12 | ||
12 | "---------------------------------------------------------------------- | 13 | "---------------------------------------------------------------------- |
13 | " 显示设置 | 14 | " 显示设置 |