diff options
| -rwxr-xr-x | mutt/mutt.desktop | 1 | ||||
| -rw-r--r-- | vim/init/basic.vim | 2 | ||||
| -rw-r--r-- | vim/init/config.vim | 10 | ||||
| -rw-r--r-- | vim/init/keymaps.vim | 354 | ||||
| -rw-r--r-- | vim/mini.lua | 36 |
5 files changed, 212 insertions, 191 deletions
diff --git a/mutt/mutt.desktop b/mutt/mutt.desktop index f5bd528..7eb47d2 100755 --- a/mutt/mutt.desktop +++ b/mutt/mutt.desktop | |||
| @@ -5,3 +5,4 @@ Exec=alacritty -e mutt %u | |||
| 5 | MimeType=x-scheme-handler/mailto | 5 | MimeType=x-scheme-handler/mailto |
| 6 | Terminal=true | 6 | Terminal=true |
| 7 | Type=Application | 7 | Type=Application |
| 8 | Categories=Email;Office;Network; | ||
diff --git a/vim/init/basic.vim b/vim/init/basic.vim index fd20476..83b4ae8 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim | |||
| @@ -12,7 +12,7 @@ augroup Enter | |||
| 12 | let bg_color = matchstr(output, 'guibg=\zs[^\s]\+\ze') | 12 | let bg_color = matchstr(output, 'guibg=\zs[^\s]\+\ze') |
| 13 | exe "!alacritty msg config 'colors.primary.background=\"\\"..bg_color.."\"'" | 13 | exe "!alacritty msg config 'colors.primary.background=\"\\"..bg_color.."\"'" |
| 14 | endfunc | 14 | endfunc |
| 15 | autocmd VimEnter * call SetEmulaterBackground() | 15 | autocmd VimEnter * silent! call SetEmulaterBackground() |
| 16 | augroup END | 16 | augroup END |
| 17 | "}}} | 17 | "}}} |
| 18 | " For Vimscript {{{ | 18 | " For Vimscript {{{ |
diff --git a/vim/init/config.vim b/vim/init/config.vim index 3870ac4..281caf5 100644 --- a/vim/init/config.vim +++ b/vim/init/config.vim | |||
| @@ -137,7 +137,6 @@ augroup InitFileTypes | |||
| 137 | if has_key(shebangMatch, l:filetype) | 137 | if has_key(shebangMatch, l:filetype) |
| 138 | let l:filetype = shebangMatch[l:filetype] | 138 | let l:filetype = shebangMatch[l:filetype] |
| 139 | endif | 139 | endif |
| 140 | echo "filetype from shebang: ".l:filetype | ||
| 141 | execute "set filetype=".l:filetype | 140 | execute "set filetype=".l:filetype |
| 142 | endif | 141 | endif |
| 143 | endfunc | 142 | endfunc |
| @@ -151,6 +150,8 @@ augroup InitFileTypes | |||
| 151 | au FileType markdown call InitMarkdownFile() | 150 | au FileType markdown call InitMarkdownFile() |
| 152 | function! InitMarkdownFile() | 151 | function! InitMarkdownFile() |
| 153 | setlocal wrap sw=2 ts=2 | 152 | setlocal wrap sw=2 ts=2 |
| 153 | let g:markdown_apply_heading_level = 0 | ||
| 154 | nnoremap \fl :let markdown_apply_heading_level = !markdown_apply_heading_level<CR>zX | ||
| 154 | 155 | ||
| 155 | let b:in_frontmatter = 0 | 156 | let b:in_frontmatter = 0 |
| 156 | setlocal foldexpr=MarkdownLevel() foldmethod=expr | 157 | setlocal foldexpr=MarkdownLevel() foldmethod=expr |
| @@ -159,7 +160,7 @@ augroup InitFileTypes | |||
| 159 | call MarkdownHighlights() | 160 | call MarkdownHighlights() |
| 160 | endfunc | 161 | endfunc |
| 161 | 162 | ||
| 162 | function MarkdownHighlights() | 163 | function! MarkdownHighlights() |
| 163 | syn match MarkdownHtmlDetails '^<details>' conceal cchar=▶ | 164 | syn match MarkdownHtmlDetails '^<details>' conceal cchar=▶ |
| 164 | syn match MarkdownHtmlSummary '<summary>' conceal cchar= | 165 | syn match MarkdownHtmlSummary '<summary>' conceal cchar= |
| 165 | syn match MarkdownHtmlSummaryEnd '</summary>' conceal | 166 | syn match MarkdownHtmlSummaryEnd '</summary>' conceal |
| @@ -184,8 +185,9 @@ augroup InitFileTypes | |||
| 184 | " Fold for heading and the following contents | 185 | " Fold for heading and the following contents |
| 185 | let hash_num = matchstr(getline(v:lnum), '^#\+') | 186 | let hash_num = matchstr(getline(v:lnum), '^#\+') |
| 186 | if !empty(hash_num) | 187 | if !empty(hash_num) |
| 188 | let foldlevel = g:markdown_apply_heading_level ? len(hash_num) - 1 : 1 | ||
| 187 | " HEADING | 189 | " HEADING |
| 188 | return len(hash_num) == 1 ? 0 : '>1' | 190 | return len(hash_num) == 1 ? 0 : '>'.foldlevel |
| 189 | else | 191 | else |
| 190 | " Contents | 192 | " Contents |
| 191 | return "=" | 193 | return "=" |
| @@ -201,7 +203,7 @@ augroup InitFileTypes | |||
| 201 | " For heading, foltext() | 203 | " For heading, foltext() |
| 202 | let origin = split(MarkdownFoldText()[2:], ' ') | 204 | let origin = split(MarkdownFoldText()[2:], ' ') |
| 203 | let heading = substitute(join(origin[:-3], ' '), '\#', ' ', 'g') | 205 | let heading = substitute(join(origin[:-3], ' '), '\#', ' ', 'g') |
| 204 | let lines = join(origin[-2:], ' ')[1:-2] | 206 | let lines = origin[-2][1:] |
| 205 | let fills = repeat('.', 48 - strwidth(heading) - len(lines)) | 207 | let fills = repeat('.', 48 - strwidth(heading) - len(lines)) |
| 206 | return heading.." "..fills.." "..lines | 208 | return heading.." "..fills.." "..lines |
| 207 | endfunc | 209 | endfunc |
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index e8cb61d..01726b9 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
| @@ -168,6 +168,138 @@ nnoremap <C-k> ddkP | |||
| 168 | nnoremap S S<ESC> | 168 | nnoremap S S<ESC> |
| 169 | 169 | ||
| 170 | " }}} | 170 | " }}} |
| 171 | " SURROUND {{{ | ||
| 172 | |||
| 173 | inoremap ' ''<Left> | ||
| 174 | inoremap " ""<Left> | ||
| 175 | inoremap ( ()<Left> | ||
| 176 | inoremap [ []<Left> | ||
| 177 | inoremap { {}<Left> | ||
| 178 | |||
| 179 | vnoremap q <ESC>`<i"<ESC>`>la"<ESC> | ||
| 180 | vnoremap ( <ESC>`<i(<ESC>`>la)<ESC> | ||
| 181 | vnoremap [ <ESC>`<i[<ESC>`>la]<ESC> | ||
| 182 | vnoremap { <ESC>`<i{<ESC>`>la}<ESC> | ||
| 183 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> | ||
| 184 | " vnoremap ' <ESC>`<i'<ESC>`>la'<ESC> | ||
| 185 | " vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> | ||
| 186 | |||
| 187 | function! AddSpaceForSelection() | ||
| 188 | " If visual selection by lines, add empty space at top and bottom | ||
| 189 | if line("'<") != line("'>") || (col("'<") == 1 && col("'>") == len(getline('.'))+1) | ||
| 190 | '< norm! O | ||
| 191 | '> norm! o | ||
| 192 | exe "norm! "..(line("'<")-1).."GV"..(line("'>")+1).."G" | ||
| 193 | " Otherwise, add space at start and end column | ||
| 194 | else | ||
| 195 | call cursor('.', col("'<")) | ||
| 196 | execute "norm! i\<space>" | ||
| 197 | call cursor('.', col("'>")+1) | ||
| 198 | execute "norm! a\<space>" | ||
| 199 | endif | ||
| 200 | endfunction | ||
| 201 | vnoremap <space> :<C-u>call AddSpaceForSelection()<CR> | ||
| 202 | |||
| 203 | " }}} | ||
| 204 | " SEARCH/SUBSTITUTE {{{ | ||
| 205 | |||
| 206 | " Search for selected test | ||
| 207 | vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR> | ||
| 208 | |||
| 209 | nnoremap g/ gv<esc>/\%V | ||
| 210 | vnoremap g/ <esc>/\%V | ||
| 211 | |||
| 212 | " Substitue across file | ||
| 213 | vnoremap <leader>s y:%s//<C-R>0/g<LEFT><LEFT> | ||
| 214 | |||
| 215 | " Usage: Press <TAB> n times for area, and <CR> for substitute | ||
| 216 | let g:search_selection = 0 | ||
| 217 | " When leaving visual mode, resume search_selection | ||
| 218 | autocmd Modechanged [vV\x16]*:* let g:search_selection = 0 | ||
| 219 | xmap <expr> <TAB> g:search_selection ? "//e<CR>" : "*:let g:search_selection = 1<CR>gv//e<CR>" | ||
| 220 | xmap <expr> <S-TAB> g:search_selection ? "??<CR>" : "*:let g:search_selection = 1<CR>gv??<CR>" | ||
| 221 | vnoremap <CR> :s//<C-R>0/g<Left><Left> | ||
| 222 | |||
| 223 | " }}} | ||
| 224 | " SIGN {{{ | ||
| 225 | |||
| 226 | nnoremap <leader><leader>sc :<C-\>e'set signcolumn='..&signcolumn<CR> | ||
| 227 | |||
| 228 | nnoremap <leader>si :exe ":sign place " .. line('.') .. " line=" .. line('.') .. " name=piet file=" .. expand("%:p")<CR> | ||
| 229 | nnoremap <leader>sI :exe ":sign unplace * file=" .. expand("%:p")<CR> | ||
| 230 | |||
| 231 | " }}} | ||
| 232 | " FOLD {{{ | ||
| 233 | |||
| 234 | " Set fold options | ||
| 235 | nnoremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> | ||
| 236 | nnoremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> | ||
| 237 | |||
| 238 | " Toggle fold and foldcolumn | ||
| 239 | nnoremap <expr> zi "zizz:silent set foldcolumn="..(&foldenable ? "0" : "auto:3").."\<CR>" | ||
| 240 | |||
| 241 | " Show fold level when it changes | ||
| 242 | nnoremap zm zm:set foldlevel?<CR> | ||
| 243 | nnoremap zr zr:set foldlevel?<CR> | ||
| 244 | |||
| 245 | " Fold all except selection | ||
| 246 | vnoremap zF :<C-u>call ToggleUnfoldSelection()<CR> | ||
| 247 | " Resume | ||
| 248 | nnoremap zF :call ToggleUnfoldSelection()<CR>zv | ||
| 249 | |||
| 250 | vnoremap \z :call GrayOutOthers()<CR> | ||
| 251 | |||
| 252 | " Select current fold | ||
| 253 | onoremap az :<C-U>silent! keepjumps normal![zV]z<CR> | ||
| 254 | xnoremap az :<C-U>silent! keepjumps normal![zV]z<CR> | ||
| 255 | onoremap iz :<C-U>silent! keepjumps normal![zjV]zk<CR> | ||
| 256 | xnoremap iz :<C-U>silent! keepjumps normal![zjV]zk<CR> | ||
| 257 | |||
| 258 | " Use l to open fold | ||
| 259 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | ||
| 260 | |||
| 261 | " Open fold in next line | ||
| 262 | nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo' | ||
| 263 | nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' | ||
| 264 | |||
| 265 | " Go to next fold and unfold | ||
| 266 | nnoremap zJ zjzx | ||
| 267 | nnoremap zK zkzx | ||
| 268 | |||
| 269 | " Fold file except selection | ||
| 270 | autocmd BufEnter * let b:unfold_selection = 0 | ||
| 271 | function! ToggleUnfoldSelection() | ||
| 272 | if !b:unfold_selection | ||
| 273 | let b:unfold_selection = 1 | ||
| 274 | mkview | ||
| 275 | echo 'Unfold'..&foldmethod | ||
| 276 | |||
| 277 | let &foldmethod = "manual" | ||
| 278 | norm! zE | ||
| 279 | execute "1,'<-1fold" | ||
| 280 | execute "'>+1,$fold" | ||
| 281 | else | ||
| 282 | let b:unfold_selection = 0 | ||
| 283 | loadview | ||
| 284 | endif | ||
| 285 | endfunction | ||
| 286 | |||
| 287 | autocmd BufEnter * let b:clear_matches = 0 | ||
| 288 | function! GrayOutOthers() | ||
| 289 | if b:clear_matches | ||
| 290 | let b:clear_matches = 0 | ||
| 291 | call clearmatches() | ||
| 292 | else | ||
| 293 | let b:clear_matches = 1 | ||
| 294 | let pos = getpos('.') | ||
| 295 | call matchadd('Folded', '\%<'.line("'<").'l') | ||
| 296 | call matchadd('Folded', '\%>'.line("'>").'l') | ||
| 297 | norm! zR | ||
| 298 | call setpos('.', pos) | ||
| 299 | endif | ||
| 300 | endfunction | ||
| 301 | |||
| 302 | " }}} | ||
| 171 | " REGISTER {{{ | 303 | " REGISTER {{{ |
| 172 | " Paste register 0 | 304 | " Paste register 0 |
| 173 | nnoremap <C-p> "0p | 305 | nnoremap <C-p> "0p |
| @@ -278,49 +410,6 @@ nnoremap <expr> z> ":\<C-u>call ChangeUnfold(1,"..v:count..")\<CR>" | |||
| 278 | nnoremap <expr> z< ":\<C-u>call ChangeUnfold(0,"..v:count..")\<CR>" | 410 | nnoremap <expr> z< ":\<C-u>call ChangeUnfold(0,"..v:count..")\<CR>" |
| 279 | 411 | ||
| 280 | "}}} | 412 | "}}} |
| 281 | " TERMINAL {{{ | ||
| 282 | |||
| 283 | " Use <leader>z to toggle | ||
| 284 | let g:alacritty_extra_padding = 0 | ||
| 285 | function! ToggleWinPadding() | ||
| 286 | if g:alacritty_extra_padding | ||
| 287 | !alacritty msg config --window-id $WINDOWID --reset | ||
| 288 | call SetEmulaterBackground() | ||
| 289 | hi EndOfBuffer None | ||
| 290 | hi MsgArea None | ||
| 291 | else | ||
| 292 | redir => output | hi LineNr | redir END | ||
| 293 | let bg_color = matchstr(output, 'guibg=\zs[^\s]\+\ze') | ||
| 294 | |||
| 295 | try | ||
| 296 | exe "hi EndOfBuffer guifg="..bg_color.." guibg="..bg_color | ||
| 297 | exe "hi MsgArea guibg="..bg_color | ||
| 298 | endtry | ||
| 299 | exe "!alacritty msg config --window-id $WINDOWID window.padding.x=300 'colors.primary.background=\"\\"..bg_color.."\"'" | ||
| 300 | endif | ||
| 301 | |||
| 302 | let g:alacritty_extra_padding = !g:alacritty_extra_padding | ||
| 303 | endfunc | ||
| 304 | nnoremap <leader>z <Cmd>silent call ToggleWinPadding()<CR> | ||
| 305 | |||
| 306 | " In case ALT key is not working | ||
| 307 | " execute "set <M-2>=\e2" | ||
| 308 | " execute "set <M-1>=\e1" | ||
| 309 | " execute "set <M-3>=\e3" | ||
| 310 | " execute "set <M-4>=\e4" | ||
| 311 | " execute "set <M-5>=\e5" | ||
| 312 | " execute "set <M-6>=\e6" | ||
| 313 | " execute "set <M-7>=\e7" | ||
| 314 | " execute "set <M-8>=\e8" | ||
| 315 | " execute "set <M-9>=\e9" | ||
| 316 | " execute "set <M-0>=\e0" | ||
| 317 | " execute "set <M-f>=\ef" | ||
| 318 | " execute "set <M-b>=\eb" | ||
| 319 | " execute "set <M-d>=\ed" | ||
| 320 | " execute "set <M-l>=\el" | ||
| 321 | " execute "set <M-h>=\eh" | ||
| 322 | |||
| 323 | "}}} | ||
| 324 | " MANAGE_VIMRC {{{ | 413 | " MANAGE_VIMRC {{{ |
| 325 | 414 | ||
| 326 | " source .vimrc | 415 | " source .vimrc |
| @@ -341,11 +430,18 @@ nnoremap so :set<space> | |||
| 341 | nnoremap <leader><leader>ft :<C-\>e'set filetype='..&filetype<CR> | 430 | nnoremap <leader><leader>ft :<C-\>e'set filetype='..&filetype<CR> |
| 342 | nnoremap <leader><leader>sw :<C-\>e'set shiftwidth='..&shiftwidth<CR> | 431 | nnoremap <leader><leader>sw :<C-\>e'set shiftwidth='..&shiftwidth<CR> |
| 343 | nnoremap <leader><leader>ts :<C-\>e'set tabstop='..&tabstop<CR> | 432 | nnoremap <leader><leader>ts :<C-\>e'set tabstop='..&tabstop<CR> |
| 344 | nnoremap \e :set expandtab!<CR>:set expandtab?<CR> | 433 | nnoremap \E :set expandtab!<CR>:set expandtab?<CR> |
| 434 | nnoremap \e :call ToggleEventIgnore()<CR> | ||
| 345 | nnoremap \l :set list!<CR>:set list?<CR> | 435 | nnoremap \l :set list!<CR>:set list?<CR> |
| 346 | nnoremap \n :set nu!<CR>:set nu?<CR> | 436 | nnoremap \n :set nu!<CR>:set nu?<CR> |
| 347 | nnoremap \r :set relativenumber!<CR>:set rnu?<CR> | 437 | nnoremap \r :set relativenumber!<CR>:set rnu?<CR> |
| 348 | 438 | ||
| 439 | function! ToggleEventIgnore() | ||
| 440 | let operator = empty(&eventignore) ? "+=" : "-=" | ||
| 441 | exe "set eventignore".operator.'all' | ||
| 442 | set eventignore? | ||
| 443 | endfunc | ||
| 444 | |||
| 349 | " Open a new buffer | 445 | " Open a new buffer |
| 350 | nnoremap <leader>B :enew<CR> | 446 | nnoremap <leader>B :enew<CR> |
| 351 | nnoremap <leader>O :e /tmp/buffer<CR> | 447 | nnoremap <leader>O :e /tmp/buffer<CR> |
| @@ -380,6 +476,7 @@ function! CloseBufferSafely() | |||
| 380 | if &modified | 476 | if &modified |
| 381 | let answer = confirm("Save changes?", "&Yes\n&No\n&Cancel") | 477 | let answer = confirm("Save changes?", "&Yes\n&No\n&Cancel") |
| 382 | if answer == 1 | write | endif | 478 | if answer == 1 | write | endif |
| 479 | if answer == 2 && empty(bufname()) | bd! | return | endif | ||
| 383 | if answer == 3 | return | endif | 480 | if answer == 3 | return | endif |
| 384 | if answer == "" | return | endif | 481 | if answer == "" | return | endif |
| 385 | endif | 482 | endif |
| @@ -403,7 +500,7 @@ function! Bye() | |||
| 403 | elseif &diff | 500 | elseif &diff |
| 404 | silent call CloseBuffersForDiff() | 501 | silent call CloseBuffersForDiff() |
| 405 | elseif len(windows) >1 | 502 | elseif len(windows) >1 |
| 406 | quit | 503 | quit! |
| 407 | else | 504 | else |
| 408 | call CloseBufferSafely() | 505 | call CloseBufferSafely() |
| 409 | " silent! call CloseBufferSafely() | 506 | " silent! call CloseBufferSafely() |
| @@ -520,80 +617,52 @@ function! Tab_MoveRight() | |||
| 520 | endif | 617 | endif |
| 521 | endfunc | 618 | endfunc |
| 522 | " }}} | 619 | " }}} |
| 523 | " FOLD {{{ | 620 | " TERMINAL {{{ |
| 524 | |||
| 525 | " Set fold options | ||
| 526 | nnoremap <leader><leader>fm :<C-\>e'set foldmethod='..&foldmethod<CR> | ||
| 527 | nnoremap <leader><leader>fc :<C-\>e'set foldcolumn='..&foldcolumn<CR> | ||
| 528 | |||
| 529 | " Toggle fold and foldcolumn | ||
| 530 | nnoremap <expr> zi "zizz:silent set foldcolumn="..(&foldenable ? "0" : "auto:3").."\<CR>" | ||
| 531 | |||
| 532 | " Show fold level when it changes | ||
| 533 | nnoremap zm zm:set foldlevel?<CR> | ||
| 534 | nnoremap zr zr:set foldlevel?<CR> | ||
| 535 | |||
| 536 | " Fold all except selection | ||
| 537 | vnoremap zF :<C-u>call ToggleUnfoldSelection()<CR> | ||
| 538 | " Resume | ||
| 539 | nnoremap zF :call ToggleUnfoldSelection()<CR>zv | ||
| 540 | |||
| 541 | nnoremap \z :call GrayOutOtherFolds()<CR> | ||
| 542 | |||
| 543 | " Select current fold | ||
| 544 | onoremap az :<C-U>silent! keepjumps normal![zV]z<CR> | ||
| 545 | xnoremap az :<C-U>silent! keepjumps normal![zV]z<CR> | ||
| 546 | onoremap iz :<C-U>silent! keepjumps normal![zjV]zk<CR> | ||
| 547 | xnoremap iz :<C-U>silent! keepjumps normal![zjV]zk<CR> | ||
| 548 | |||
| 549 | " Use l to open fold | ||
| 550 | nnoremap <expr> l foldclosed('.') == -1 ? 'l' : 'zo' | ||
| 551 | |||
| 552 | " Open fold in next line | ||
| 553 | nnoremap <expr> zo foldclosed('.') == -1 ? 'zjzo' : 'zo' | ||
| 554 | nnoremap <expr> zO foldclosed('.') == -1 ? 'zjzO' : 'zO' | ||
| 555 | |||
| 556 | " Go to next fold and unfold | ||
| 557 | nnoremap zJ zjzx | ||
| 558 | nnoremap zK zkzx | ||
| 559 | |||
| 560 | " Fold file except selection | ||
| 561 | autocmd BufEnter * let b:unfold_selection = 0 | ||
| 562 | function! ToggleUnfoldSelection() | ||
| 563 | if !b:unfold_selection | ||
| 564 | let b:unfold_selection = 1 | ||
| 565 | mkview | ||
| 566 | echo 'Unfold'..&foldmethod | ||
| 567 | 621 | ||
| 568 | let &foldmethod = "manual" | 622 | " Use <leader>z to toggle |
| 569 | norm! zE | 623 | let g:alacritty_extra_padding = 0 |
| 570 | execute "0,'<-1fold" | 624 | function! ToggleWinPadding() |
| 571 | execute "'>+1,$fold" | 625 | if g:alacritty_extra_padding |
| 626 | !alacritty msg config --window-id $WINDOWID --reset | ||
| 627 | call SetEmulaterBackground() | ||
| 628 | hi EndOfBuffer None | ||
| 629 | hi MsgArea None | ||
| 572 | else | 630 | else |
| 573 | let b:unfold_selection = 0 | 631 | redir => output | hi LineNr | redir END |
| 574 | loadview | 632 | let bg_color = matchstr(output, 'guibg=\zs[^\s]\+\ze') |
| 575 | endif | ||
| 576 | endfunction | ||
| 577 | 633 | ||
| 578 | autocmd BufEnter * let b:clear_matches = 0 | 634 | try |
| 579 | function! GrayOutOtherFolds() | 635 | exe "hi EndOfBuffer guifg="..bg_color.." guibg="..bg_color |
| 580 | if b:clear_matches | 636 | exe "hi MsgArea guibg="..bg_color |
| 581 | let b:clear_matches = 0 | 637 | endtry |
| 582 | call clearmatches() | 638 | exe "!alacritty msg config --window-id $WINDOWID window.padding.x=300 'colors.primary.background=\"\\"..bg_color.."\"'" |
| 583 | else | ||
| 584 | let b:clear_matches = 1 | ||
| 585 | let pos = getpos('.') | ||
| 586 | exe "norm! [zV]z\<C-c>" | ||
| 587 | call matchadd('Folded', '\%<'.line("'<").'l') | ||
| 588 | call matchadd('Folded', '\%>'.line("'>").'l') | ||
| 589 | norm! zR | ||
| 590 | call setpos('.', pos) | ||
| 591 | endif | 639 | endif |
| 592 | endfunction | ||
| 593 | 640 | ||
| 594 | " }}} | 641 | let g:alacritty_extra_padding = !g:alacritty_extra_padding |
| 642 | endfunc | ||
| 643 | nnoremap <leader>z <Cmd>silent call ToggleWinPadding()<CR> | ||
| 644 | |||
| 645 | " In case ALT key is not working | ||
| 646 | " execute "set <M-2>=\e2" | ||
| 647 | " execute "set <M-1>=\e1" | ||
| 648 | " execute "set <M-3>=\e3" | ||
| 649 | " execute "set <M-4>=\e4" | ||
| 650 | " execute "set <M-5>=\e5" | ||
| 651 | " execute "set <M-6>=\e6" | ||
| 652 | " execute "set <M-7>=\e7" | ||
| 653 | " execute "set <M-8>=\e8" | ||
| 654 | " execute "set <M-9>=\e9" | ||
| 655 | " execute "set <M-0>=\e0" | ||
| 656 | " execute "set <M-f>=\ef" | ||
| 657 | " execute "set <M-b>=\eb" | ||
| 658 | " execute "set <M-d>=\ed" | ||
| 659 | " execute "set <M-l>=\el" | ||
| 660 | " execute "set <M-h>=\eh" | ||
| 661 | |||
| 662 | "}}} | ||
| 595 | " HIGHLIGHT {{{ | 663 | " HIGHLIGHT {{{ |
| 596 | 664 | ||
| 665 | nnoremap <leader>I :Inspect<CR> | ||
| 597 | nnoremap <expr> \sy exists("g:syntax_on") ? ":syntax off <CR>" : ":syntax enable<CR>" | 666 | nnoremap <expr> \sy exists("g:syntax_on") ? ":syntax off <CR>" : ":syntax enable<CR>" |
| 598 | 667 | ||
| 599 | " Toggle conceallevel0/2 | 668 | " Toggle conceallevel0/2 |
| @@ -630,39 +699,6 @@ nnoremap <silent> <leader>gh :call matchadd('MultiLineHighlight', '\%'.line('.') | |||
| 630 | nnoremap <silent> <leader>gH :call clearmatches()<CR> | 699 | nnoremap <silent> <leader>gH :call clearmatches()<CR> |
| 631 | 700 | ||
| 632 | " }}} | 701 | " }}} |
| 633 | " SURROUND {{{ | ||
| 634 | |||
| 635 | inoremap ' ''<Left> | ||
| 636 | inoremap " ""<Left> | ||
| 637 | inoremap ( ()<Left> | ||
| 638 | inoremap [ []<Left> | ||
| 639 | inoremap { {}<Left> | ||
| 640 | |||
| 641 | vnoremap q <ESC>`<i"<ESC>`>la"<ESC> | ||
| 642 | vnoremap ( <ESC>`<i(<ESC>`>la)<ESC> | ||
| 643 | vnoremap [ <ESC>`<i[<ESC>`>la]<ESC> | ||
| 644 | vnoremap { <ESC>`<i{<ESC>`>la}<ESC> | ||
| 645 | vnoremap Q <ESC>`<i「<ESC>`>la」<ESC> | ||
| 646 | " vnoremap ' <ESC>`<i'<ESC>`>la'<ESC> | ||
| 647 | " vnoremap ` <ESC>`<i`<ESC>`>la`<ESC> | ||
| 648 | |||
| 649 | function! AddSpaceForSelection() | ||
| 650 | " If visual selection by lines, add empty space at top and bottom | ||
| 651 | if line("'<") != line("'>") || (col("'<") == 1 && col("'>") == len(getline('.'))+1) | ||
| 652 | '< norm! O | ||
| 653 | '> norm! o | ||
| 654 | exe "norm! "..(line("'<")-1).."GV"..(line("'>")+1).."G" | ||
| 655 | " Otherwise, add space at start and end column | ||
| 656 | else | ||
| 657 | call cursor('.', col("'<")) | ||
| 658 | execute "norm! i\<space>" | ||
| 659 | call cursor('.', col("'>")+1) | ||
| 660 | execute "norm! a\<space>" | ||
| 661 | endif | ||
| 662 | endfunction | ||
| 663 | vnoremap <space> :<C-u>call AddSpaceForSelection()<CR> | ||
| 664 | |||
| 665 | " }}} | ||
| 666 | " QUICKFIX {{{ | 702 | " QUICKFIX {{{ |
| 667 | 703 | ||
| 668 | nnoremap <leader>cn :cn<CR> | 704 | nnoremap <leader>cn :cn<CR> |
| @@ -694,34 +730,6 @@ command! -nargs=1 -complete=command Redir silent call Redir(<q-args>) | |||
| 694 | command! -nargs=1 -complete=command R silent call Redir(<q-args>) | 730 | command! -nargs=1 -complete=command R silent call Redir(<q-args>) |
| 695 | nnoremap <leader>rr :Redir<space> | 731 | nnoremap <leader>rr :Redir<space> |
| 696 | " }}} | 732 | " }}} |
| 697 | " SEARCH/SUBSTITUTE {{{ | ||
| 698 | |||
| 699 | " Search for selected test | ||
| 700 | vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR> | ||
| 701 | |||
| 702 | nnoremap g/ gv<esc>/\%V | ||
| 703 | vnoremap g/ <esc>/\%V | ||
| 704 | |||
| 705 | " Substitue across file | ||
| 706 | vnoremap <leader>s y:%s//<C-R>0/g<LEFT><LEFT> | ||
| 707 | |||
| 708 | " Usage: Press <TAB> n times for area, and <CR> for substitute | ||
| 709 | let g:search_selection = 0 | ||
| 710 | " When leaving visual mode, resume search_selection | ||
| 711 | autocmd Modechanged [vV\x16]*:* let g:search_selection = 0 | ||
| 712 | xmap <expr> <TAB> g:search_selection ? "//e<CR>" : "*:let g:search_selection = 1<CR>gv//e<CR>" | ||
| 713 | xmap <expr> <S-TAB> g:search_selection ? "??<CR>" : "*:let g:search_selection = 1<CR>gv??<CR>" | ||
| 714 | vnoremap <CR> :s//<C-R>0/g<Left><Left> | ||
| 715 | |||
| 716 | " }}} | ||
| 717 | " SIGN {{{ | ||
| 718 | |||
| 719 | nnoremap <leader><leader>sc :<C-\>e'set signcolumn='..&signcolumn<CR> | ||
| 720 | |||
| 721 | nnoremap <leader>si :exe ":sign place " .. line('.') .. " line=" .. line('.') .. " name=piet file=" .. expand("%:p")<CR> | ||
| 722 | nnoremap <leader>sI :exe ":sign unplace * file=" .. expand("%:p")<CR> | ||
| 723 | |||
| 724 | " }}} | ||
| 725 | " GIT_TIG {{{ | 733 | " GIT_TIG {{{ |
| 726 | 734 | ||
| 727 | let g:tig_explorer_keymap_commit_split = '<C-s>' | 735 | let g:tig_explorer_keymap_commit_split = '<C-s>' |
diff --git a/vim/mini.lua b/vim/mini.lua index 8a19d63..398ebb4 100644 --- a/vim/mini.lua +++ b/vim/mini.lua | |||
| @@ -345,9 +345,19 @@ Add { | |||
| 345 | source = "adamheins/vim-highlight-match-under-cursor" | 345 | source = "adamheins/vim-highlight-match-under-cursor" |
| 346 | } | 346 | } |
| 347 | -- }}} | 347 | -- }}} |
| 348 | -- vim-livedown {{{ | ||
| 348 | Add { | 349 | Add { |
| 349 | source ='shime/vim-livedown' | 350 | source ='shime/vim-livedown' |
| 350 | } | 351 | } |
| 352 | vim.keymap.set( 'n', '<F10>', ":LivedownToggle<CR>", { buffer = bufnr, desc = '' }) | ||
| 353 | -- }}} | ||
| 354 | -- Preview Image {{{ | ||
| 355 | Add { | ||
| 356 | source = 'qaiviq/vim-imager' | ||
| 357 | } | ||
| 358 | vim.cmd("let g:imager#filetypes = ['.md']") | ||
| 359 | vim.keymap.set( 'n', '\\i', ":ToggleImages<CR>", { buffer = bufnr, desc = '' }) | ||
| 360 | -- }}} | ||
| 351 | 361 | ||
| 352 | 362 | ||
| 353 | -- Install Lazy {{{ | 363 | -- Install Lazy {{{ |
| @@ -425,20 +435,20 @@ require("lazy").setup({ | |||
| 425 | } | 435 | } |
| 426 | } | 436 | } |
| 427 | -- keymaps {{{ | 437 | -- keymaps {{{ |
| 428 | for i = 1, 9, 1 do | 438 | for i = 1, 9, 1 do |
| 429 | vim.keymap.set("n", string.format("<A-%s>", i), function() | 439 | vim.keymap.set("n", string.format("<A-%s>", i), function() |
| 430 | vim.cmd("BufferLineGoToBuffer " .. i) | 440 | require("bufferline").go_to(i, true) |
| 431 | end, { silent = true }) | 441 | end, { silent = true }) |
| 432 | end | ||
| 433 | local opts = { noremap = true, silent = true } | ||
| 434 | vim.keymap.set("n", "<TAB>", "<Cmd>BufferLineCyclePrev<CR>", opts) | ||
| 435 | vim.keymap.set("n", "<S-TAB>", "<Cmd>BufferLineCycleNext<CR>", opts) | ||
| 436 | vim.keymap.set("n", "<M-h>", "<Cmd>BufferLineMovePrev<CR>", opts) | ||
| 437 | vim.keymap.set("n", "<M-l>", "<Cmd>BufferLineMoveNext<CR>", opts) | ||
| 438 | vim.keymap.set("n", "<M-p>", "<Cmd>BufferLineTogglePin<CR>", opts) | ||
| 439 | -- }}} | ||
| 440 | end | 442 | end |
| 441 | }, | 443 | local opts = { noremap = true, silent = true } |
| 444 | vim.keymap.set("n", "<TAB>", "<Cmd>BufferLineCyclePrev<CR>", opts) | ||
| 445 | vim.keymap.set("n", "<S-TAB>", "<Cmd>BufferLineCycleNext<CR>", opts) | ||
| 446 | vim.keymap.set("n", "<M-h>", "<Cmd>BufferLineMovePrev<CR>", opts) | ||
| 447 | vim.keymap.set("n", "<M-l>", "<Cmd>BufferLineMoveNext<CR>", opts) | ||
| 448 | vim.keymap.set("n", "<M-p>", "<Cmd>BufferLineTogglePin<CR>", opts) | ||
| 449 | -- }}} | ||
| 450 | end | ||
| 451 | }, | ||
| 442 | -- }}} | 452 | -- }}} |
| 443 | -- lualine {{{ | 453 | -- lualine {{{ |
| 444 | { | 454 | { |