diff options
| -rw-r--r-- | X11/alacritty/alacritty.toml | 2 | ||||
| -rw-r--r-- | snippets/vim_function | 3 | ||||
| -rw-r--r-- | vim/init.vim | 2 | ||||
| -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 | ||||
| -rw-r--r-- | vim/lua/chadrc.lua | 98 |
8 files changed, 231 insertions, 159 deletions
diff --git a/X11/alacritty/alacritty.toml b/X11/alacritty/alacritty.toml index a5e2963..bdfd458 100644 --- a/X11/alacritty/alacritty.toml +++ b/X11/alacritty/alacritty.toml | |||
| @@ -66,7 +66,7 @@ opacity = 1.0 | |||
| 66 | startup_mode = "Windowed" | 66 | startup_mode = "Windowed" |
| 67 | 67 | ||
| 68 | [window.dimensions] | 68 | [window.dimensions] |
| 69 | columns = 82 | 69 | columns = 78 |
| 70 | lines = 18 | 70 | lines = 18 |
| 71 | 71 | ||
| 72 | [window.padding] | 72 | [window.padding] |
diff --git a/snippets/vim_function b/snippets/vim_function new file mode 100644 index 0000000..784dbd7 --- /dev/null +++ b/snippets/vim_function | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | function! FuncName() | ||
| 2 | |||
| 3 | endfunction | ||
diff --git a/vim/init.vim b/vim/init.vim index adfd9d6..fd65816 100644 --- a/vim/init.vim +++ b/vim/init.vim | |||
| @@ -27,3 +27,5 @@ else | |||
| 27 | LoadScript init/plugins.vim | 27 | LoadScript init/plugins.vim |
| 28 | LoadScript init/style.vim | 28 | LoadScript init/style.vim |
| 29 | endif | 29 | endif |
| 30 | |||
| 31 | highlight CursorLineNr term=bold cterm=bold ctermfg=226 gui=bold guifg=#eeee00 | ||
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 | " 显示设置 |
diff --git a/vim/lua/chadrc.lua b/vim/lua/chadrc.lua index f9c2357..4b65f52 100644 --- a/vim/lua/chadrc.lua +++ b/vim/lua/chadrc.lua | |||
| @@ -5,56 +5,68 @@ | |||
| 5 | local M = {} | 5 | local M = {} |
| 6 | 6 | ||
| 7 | M.ui = { | 7 | M.ui = { |
| 8 | theme = "onedark", | 8 | theme = "onedark", |
| 9 | hl_override = { | ||
| 10 | CursorLineNr = { fg = "#eeee00" }, | ||
| 11 | }, | ||
| 9 | 12 | ||
| 10 | -- hl_override = { | 13 | -- hl_override = { |
| 11 | -- Comment = { italic = true }, | 14 | -- Comment = { italic = true }, |
| 12 | -- ["@comment"] = { italic = true }, | 15 | -- ["@comment"] = { italic = true }, |
| 13 | -- }, | 16 | -- }, |
| 14 | tabufline = { | 17 | tabufline = { |
| 15 | enabled = true, | 18 | enabled = true, |
| 16 | order = { "treeOffset", "buffers", "tabs" }, | 19 | order = { "treeOffset", "buffers", "tabs" }, |
| 17 | }, | 20 | }, |
| 18 | 21 | ||
| 19 | term = { | 22 | term = { |
| 20 | hl = "Normal:term,WinSeparator:WinSeparator", | 23 | hl = "Normal:term,WinSeparator:WinSeparator", |
| 21 | sizes = { sp = 0.4, vsp = 0.4 }, | 24 | sizes = { sp = 0.4, vsp = 0.4 }, |
| 22 | float = { | 25 | float = { |
| 23 | relative = "editor", | 26 | relative = "editor", |
| 24 | row = 0.15, | 27 | row = 0.15, |
| 25 | col = 0.13, | 28 | col = 0.13, |
| 26 | width = 0.7, | 29 | width = 0.7, |
| 27 | height = 0.7, | 30 | height = 0.7, |
| 28 | border = "single", | 31 | border = "single", |
| 29 | }, | 32 | }, |
| 30 | }, | 33 | }, |
| 31 | } | 34 | } |
| 32 | 35 | ||
| 33 | -- For tabufline | 36 | -- For tabufline |
| 34 | if M.ui.tabufline.enabled then | 37 | if M.ui.tabufline.enabled then |
| 38 | vim.api.nvim_exec( | ||
| 39 | [[ | ||
| 40 | function! CloseBufferSafely() | ||
| 41 | lua require("nvchad.tabufline").close_buffer() | ||
| 42 | endfunction | ||
| 43 | ]], | ||
| 44 | false | ||
| 45 | ) | ||
| 35 | 46 | ||
| 36 | -- vim.keymap.set("n", "<C-c>", function() | 47 | for i = 1, 9, 1 do |
| 37 | -- local bufnrs = vim.tbl_filter(function(b) return 1 == vim.fn.buflisted(b) end, vim.api.nvim_list_bufs()) | 48 | vim.keymap.set("n", string.format("<A-%s>", i), function() |
| 38 | -- if #bufnrs == 1 or #vim.fn.getwininfo() > 1 then | 49 | vim.api.nvim_set_current_buf(vim.t.bufs[i]) |
| 39 | -- vim.cmd("silent quit") | 50 | end) |
| 40 | -- else | 51 | end |
| 41 | -- require("nvchad.tabufline").close_buffer() | 52 | vim.keymap.set("n", "<A-h>", function() |
| 42 | -- -- vim.cmd("bdelete") | 53 | require("nvchad.tabufline").move_buf(-1) |
| 43 | -- end | 54 | end) |
| 44 | -- end, { desc = "buffer close" }) | 55 | vim.keymap.set("n", "<A-l>", function() |
| 45 | 56 | require("nvchad.tabufline").move_buf(1) | |
| 46 | for i = 1, 9, 1 do | 57 | end) |
| 47 | vim.keymap.set("n", string.format("<A-%s>", i), function() | 58 | vim.keymap.set("n", "<A-H>", function() |
| 48 | vim.api.nvim_set_current_buf(vim.t.bufs[i]) | 59 | vim.cmd("tabprevious") |
| 49 | end) | 60 | end) |
| 50 | end | 61 | vim.keymap.set("n", "<A-L>", function() |
| 51 | vim.keymap.set("n", "<A-h>", function() require("nvchad.tabufline").move_buf(-1) end) | 62 | vim.cmd("tabnext") |
| 52 | vim.keymap.set("n", "<A-l>", function() require("nvchad.tabufline").move_buf(1) end) | 63 | end) |
| 53 | vim.keymap.set("n", "<A-H>", function() vim.cmd("tabprevious") end) | 64 | vim.keymap.set("n", "<tab>", function() |
| 54 | vim.keymap.set("n", "<A-L>", function() vim.cmd("tabnext") end) | 65 | require("nvchad.tabufline").next() |
| 55 | vim.keymap.set("n", "<tab>", function() require("nvchad.tabufline").next() end, { desc = "buffer goto next" }) | 66 | end, { desc = "buffer goto next" }) |
| 56 | vim.keymap.set("n", "<S-tab>", function() require("nvchad.tabufline").prev() end, { desc = "buffer goto prev" }) | 67 | vim.keymap.set("n", "<S-tab>", function() |
| 57 | 68 | require("nvchad.tabufline").prev() | |
| 69 | end, { desc = "buffer goto prev" }) | ||
| 58 | end | 70 | end |
| 59 | 71 | ||
| 60 | return M | 72 | return M |