aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-08-11 19:23:39 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-08-11 19:23:39 +0800
commit19fc326fb2ff83ae91399490aab2b5b368418e41 (patch)
tree0e46336d539f41b08ad61ad0b271e89b15dbcd9d /vim
parent017422a2ae50514e2d2cc25d32bd77fac79be3b3 (diff)
Update
Diffstat (limited to 'vim')
-rw-r--r--vim/init/basic.vim14
-rw-r--r--vim/init/config.vim118
-rw-r--r--vim/init/keymaps.vim33
-rw-r--r--vim/mini.lua8
4 files changed, 88 insertions, 85 deletions
diff --git a/vim/init/basic.vim b/vim/init/basic.vim
index 83b4ae8..c7043dd 100644
--- a/vim/init/basic.vim
+++ b/vim/init/basic.vim
@@ -88,10 +88,10 @@ set whichwrap=b,s
88set showtabline=2 88set showtabline=2
89 89
90" Side column 90" Side column
91set number relativenumber 91set number relativenumber
92 92
93" Cursor 93" Cursor
94" set cursorline 94set cursorline
95set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20 95set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20
96set matchtime=2 96set matchtime=2
97 97
@@ -223,15 +223,7 @@ set writebackup
223syntax enable 223syntax enable
224set syntax=filetype 224set syntax=filetype
225set conceallevel=2 225set conceallevel=2
226 226set concealcursor=
227" Defualt highlight for matched parenthesis is so weird in many colorscheme
228" Why the background color is lighter than my caret !?
229" highlight MatchParen ctermfg=NONE ctermbg=darkgrey cterm=NONE
230hi LuaParen ctermfg=NONE ctermbg=darkgrey cterm=NONE
231
232" Show trailing spaces
233match ExtraWhitespace /\s\+$/
234hi ExtraWhitespace ctermbg=red guibg=red
235 227
236" }}} 228" }}}
237" MISC {{{ 229" MISC {{{
diff --git a/vim/init/config.vim b/vim/init/config.vim
index 8c75de9..8d84ff1 100644
--- a/vim/init/config.vim
+++ b/vim/init/config.vim
@@ -145,71 +145,66 @@ augroup InitFileTypes
145 " }}} 145 " }}}
146 " Markdown {{{ 146 " Markdown {{{
147 147
148 augroup Config_Markdown 148 au FileType markdown call InitMarkdownFile()
149 au! 149 function! InitMarkdownFile()
150 150 setlocal wrap sw=2 ts=2
151 au FileType markdown call InitMarkdownFile() 151 let g:markdown_apply_heading_level = 0
152 function! InitMarkdownFile() 152 nnoremap \fl :let markdown_apply_heading_level = !markdown_apply_heading_level<CR>zX
153 setlocal wrap sw=2 ts=2 153
154 let g:markdown_apply_heading_level = 0 154 let b:in_frontmatter = 0
155 nnoremap \fl :let markdown_apply_heading_level = !markdown_apply_heading_level<CR>zX 155 setlocal foldexpr=MarkdownLevel() foldmethod=expr
156 156 setlocal foldtext=MarkdownFoldTextHeading()
157 let b:in_frontmatter = 0 157
158 setlocal foldexpr=MarkdownLevel() foldmethod=expr 158 call MarkdownHighlights()
159 setlocal foldtext=MarkdownFoldTextHeading() 159 endfunc
160 160
161 call MarkdownHighlights() 161 function! MarkdownHighlights()
162 endfunc 162 syn match MarkdownHtmlDetails '^<details>' conceal cchar=▶
163 163 syn match MarkdownHtmlSummary '<summary>' conceal cchar=
164 function! MarkdownHighlights() 164 syn match MarkdownHtmlSummaryEnd '</summary>' conceal
165 syn match MarkdownHtmlDetails '^<details>' conceal cchar=▶ 165 syn match MarkdownHtmlDetailsEnd '^</details>' conceal cchar=E
166 syn match MarkdownHtmlSummary '<summary>' conceal cchar= 166 endfunc
167 syn match MarkdownHtmlSummaryEnd '</summary>' conceal
168 syn match MarkdownHtmlDetailsEnd '^</details>' conceal cchar=E
169 endfunc
170
171 function! MarkdownLevel()
172 " For frontmatter
173 if v:lnum == 1 && getline(1) =~ '^---'
174 let b:in_frontmatter = 1
175 return '>1'
176 endif
177 if b:in_frontmatter
178 if getline(v:lnum) =~ '^---'
179 let b:in_frontmatter = 0
180 return '<1'
181 else
182 return '='
183 endif
184 endif
185 167
186 " Fold for heading and the following contents 168 function! MarkdownLevel()
187 let hash_num = matchstr(getline(v:lnum), '^#\+') 169 " For frontmatter
188 if !empty(hash_num) 170 if v:lnum == 1 && getline(1) =~ '^---'
189 let foldlevel = g:markdown_apply_heading_level ? len(hash_num) - 1 : 1 171 let b:in_frontmatter = 1
190 " HEADING 172 return '>1'
191 return len(hash_num) == 1 ? 0 : '>'.foldlevel 173 endif
174 if b:in_frontmatter
175 if getline(v:lnum) =~ '^---'
176 let b:in_frontmatter = 0
177 return '<1'
192 else 178 else
193 " Contents 179 return '='
194 return "="
195 endif 180 endif
196 endfunc 181 endif
197 182
198 function! MarkdownFoldTextHeading() 183 " Fold for heading and the following contents
199 " For frontmatter 184 let hash_num = matchstr(getline(v:lnum), '^#\+')
200 if v:foldstart == 1 && getline(v:foldstart) =~ '^---' 185 if !empty(hash_num)
201 return '===FrontMatter===' 186 let foldlevel = g:markdown_apply_heading_level ? len(hash_num) - 1 : 1
202 endif 187 " HEADING
188 return len(hash_num) == 1 ? 0 : '>'.foldlevel
189 else
190 " Contents
191 return "="
192 endif
193 endfunc
203 194
204 " For heading, foltext() 195 function! MarkdownFoldTextHeading()
205 let origin = split(MarkdownFoldText()[2:], ' ') 196 " For frontmatter
206 let heading = substitute(join(origin[:-3], ' '), '\#', ' ', 'g') 197 if v:foldstart == 1 && getline(v:foldstart) =~ '^---'
207 let lines = origin[-2][1:] 198 return '===FrontMatter==='
208 let fills = repeat('.', 48 - strwidth(heading) - len(lines)) 199 endif
209 return heading.." "..fills.." "..lines
210 endfunc
211 200
212 augroup END 201 " For heading, foltext()
202 let origin = split(MarkdownFoldText()[2:], ' ')
203 let heading = substitute(join(origin[:-3], ' '), '\#', ' ', 'g')
204 let lines = origin[-2][1:]
205 let fills = repeat('.', 48 - strwidth(heading) - len(lines))
206 return heading.." "..fills.." "..lines
207 endfunc
213 208
214 " }}} 209 " }}}
215 " HTML {{{ 210 " HTML {{{
@@ -255,9 +250,12 @@ augroup InitFileTypes
255 function! SetPasswordFile() 250 function! SetPasswordFile()
256 setlocal foldminlines=0 251 setlocal foldminlines=0
257 setlocal foldmethod=manual 252 setlocal foldmethod=manual
258 setlocal foldtext="Password" 253 setlocal foldtext=PasswordFoldtext()
259 norm! ggzfl 254 norm! ggzfl
260 endfunc 255 endfunc
256 function! PasswordFoldtext()
257 return "---Password---"
258 endfunc
261 " }}} 259 " }}}
262 " Beancount {{{ 260 " Beancount {{{
263 261
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim
index a28ce09..95d4c18 100644
--- a/vim/init/keymaps.vim
+++ b/vim/init/keymaps.vim
@@ -12,11 +12,11 @@ map <space> /
12inoremap <C-c> <Esc>l 12inoremap <C-c> <Esc>l
13 13
14" Set wrap 14" Set wrap
15nnoremap \w :set wrap!<CR> 15nnoremap \w :set wrap!<CR>:set wrap?<CR>
16 16
17" Fast saving 17" Fast saving
18function! s:WriteOrEnterFileName() 18function! s:WriteOrEnterFileName()
19 if !empty(expand('%')) | write! | else | call feedkeys(":w ") | endif 19 if !empty(bufname('%')) | write! | else | call feedkeys(":w ") | endif
20endfunction 20endfunction
21nnoremap <leader>w :call <SID>WriteOrEnterFileName()<CR> 21nnoremap <leader>w :call <SID>WriteOrEnterFileName()<CR>
22 22
@@ -37,7 +37,7 @@ augroup vimrc_CRfix
37augroup END 37augroup END
38 38
39" Spell 39" Spell
40nnoremap \sp :set spell!<CR>:set spell?<CR> 40nnoremap \\sp :set spell!<CR>:set spell?<CR>
41 41
42" Show full path by default 42" Show full path by default
43nnoremap <C-g> 1<C-g> 43nnoremap <C-g> 1<C-g>
@@ -93,7 +93,6 @@ nnoremap <C-h> 30h
93nnoremap <C-l> 30l 93nnoremap <C-l> 30l
94 94
95" File under the cursor 95" File under the cursor
96nnoremap <CR> gf
97nnoremap gF :e <cfile><CR> 96nnoremap gF :e <cfile><CR>
98 97
99xnoremap iq i" 98xnoremap iq i"
@@ -160,6 +159,12 @@ inoremap <silent><M-9> <Esc>:tablast<CR>
160" }}} 159" }}}
161" EDIT {{{ 160" EDIT {{{
162 161
162" Set text width for auto wrapping
163nnoremap <leader><leader>tw :set fo+=t<CR>:<C-\>e'set tw='..&tw<CR>
164
165" Set columns
166nnoremap <leader><leader>co :<C-\>e'set columns='..&co<CR>
167
163" Move one line up and down 168" Move one line up and down
164nnoremap <C-j> ddp 169nnoremap <C-j> ddp
165nnoremap <C-k> ddkP 170nnoremap <C-k> ddkP
@@ -247,8 +252,6 @@ vnoremap zF :<C-u>call ToggleUnfoldSelection()<CR>
247" Resume 252" Resume
248nnoremap zF :call ToggleUnfoldSelection()<CR>zv 253nnoremap zF :call ToggleUnfoldSelection()<CR>zv
249 254
250vnoremap \z :call GrayOutOthers()<CR>
251
252" Select current fold 255" Select current fold
253onoremap az :<C-U>silent! keepjumps normal![zV]z<CR> 256onoremap az :<C-U>silent! keepjumps normal![zV]z<CR>
254xnoremap az :<C-U>silent! keepjumps normal![zV]z<CR> 257xnoremap az :<C-U>silent! keepjumps normal![zV]z<CR>
@@ -298,6 +301,8 @@ function! GrayOutOthers()
298 call setpos('.', pos) 301 call setpos('.', pos)
299 endif 302 endif
300endfunction 303endfunction
304vnoremap \z :call GrayOutOthers()<CR>
305nnoremap \z :call GrayOutOthers()<CR>
301 306
302" }}} 307" }}}
303" REGISTER {{{ 308" REGISTER {{{
@@ -481,7 +486,7 @@ function! CloseBufferSafely()
481 endif 486 endif
482 487
483 let bufnr = bufnr() 488 let bufnr = bufnr()
484 if !has_key(t:, 'bufs') || len(t:bufs) == 1 489 if !has_key(t:, 'bufs') || len(t:bufs) <= 1
485 " Close tab for last buffer 490 " Close tab for last buffer
486 tabclose 491 tabclose
487 else 492 else
@@ -621,10 +626,10 @@ endfunc
621" }}} 626" }}}
622" TERMINAL {{{ 627" TERMINAL {{{
623 628
624" Use <leader>z to toggle 629" Use <leader>z to toggle window padding for alacritty
625let g:alacritty_extra_padding = 0 630let g:alacritty_extra_padding = 0
626function! ToggleWinPadding() 631function! ToggleWinPadding(padding)
627 if g:alacritty_extra_padding 632 if g:alacritty_extra_padding && !a:padding
628 !alacritty msg config --window-id $WINDOWID --reset 633 !alacritty msg config --window-id $WINDOWID --reset
629 call SetEmulaterBackground() 634 call SetEmulaterBackground()
630 hi EndOfBuffer None 635 hi EndOfBuffer None
@@ -638,12 +643,14 @@ function! ToggleWinPadding()
638 exe "hi EndOfBuffer guifg="..bg_color.." guibg="..bg_color 643 exe "hi EndOfBuffer guifg="..bg_color.." guibg="..bg_color
639 exe "hi MsgArea guibg="..bg_color 644 exe "hi MsgArea guibg="..bg_color
640 endtry 645 endtry
641 exe "!alacritty msg config --window-id $WINDOWID window.padding.x=270 'colors.primary.background=\"\\"..bg_color.."\"'" 646
647 let padding = a:padding ? a:padding : "270"
648 exe "!alacritty msg config --window-id $WINDOWID window.padding.x=" . padding . " 'colors.primary.background=\"\\"..bg_color.."\"'"
642 endif 649 endif
643 650
644 let g:alacritty_extra_padding = !g:alacritty_extra_padding 651 let g:alacritty_extra_padding = !g:alacritty_extra_padding
645endfunc 652endfunc
646nnoremap <leader>z <Cmd>silent call ToggleWinPadding()<CR> 653nnoremap <expr> <leader>z ":\<C-u> silent call ToggleWinPadding(" . v:count . ")\<CR>"
647 654
648" In case ALT key is not working 655" In case ALT key is not working
649" execute "set <M-2>=\e2" 656" execute "set <M-2>=\e2"
@@ -666,7 +673,7 @@ nnoremap <leader>z <Cmd>silent call ToggleWinPadding()<CR>
666" HIGHLIGHT {{{ 673" HIGHLIGHT {{{
667 674
668nnoremap <leader>I :Inspect<CR> 675nnoremap <leader>I :Inspect<CR>
669nnoremap <expr> \sy exists("g:syntax_on") ? ":syntax off <CR>" : ":syntax enable<CR>" 676nnoremap <expr> \s exists("g:syntax_on") ? ":syntax off <CR>" : ":syntax enable<CR>"
670 677
671" Toggle conceallevel0/2 678" Toggle conceallevel0/2
672nnoremap <expr> \c ":set conceallevel="..(&cole ? 0 : 2).."<CR>:set cole?<CR>" 679nnoremap <expr> \c ":set conceallevel="..(&cole ? 0 : 2).."<CR>:set cole?<CR>"
diff --git a/vim/mini.lua b/vim/mini.lua
index ff1a3fe..1ca1d26 100644
--- a/vim/mini.lua
+++ b/vim/mini.lua
@@ -48,7 +48,7 @@ require("mini.extra").setup()
48-- }}} 48-- }}}
49-- mini.colors {{{ 49-- mini.colors {{{
50require("mini.colors").setup() 50require("mini.colors").setup()
51vim.keymap.set("n", "<leader><leader>co", function() 51vim.keymap.set("n", "<leader><leader>color", function()
52 require("mini.colors").interactive() 52 require("mini.colors").interactive()
53end) 53end)
54-- }}} 54-- }}}
@@ -323,6 +323,12 @@ require("mini.pairs").setup()
323-- -- suda {{{ 323-- -- suda {{{
324-- add { source = "lambdalisue/suda.vim" } 324-- add { source = "lambdalisue/suda.vim" }
325-- }}} 325-- }}}
326-- -- undotree {{{
327-- Add {
328-- source = 'mbbill/undotree'
329-- }
330-- vim.cmd("nnoremap <F5> :UndotreeToggle<CR>")
331-- -- }}}
326-- marks.nvim {{{ 332-- marks.nvim {{{
327Add { 333Add {
328 source = "chentoast/marks.nvim" 334 source = "chentoast/marks.nvim"