From 19fc326fb2ff83ae91399490aab2b5b368418e41 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Sun, 11 Aug 2024 19:23:39 +0800 Subject: Update --- vim/init/basic.vim | 14 ++---- vim/init/config.vim | 118 +++++++++++++++++++++++++-------------------------- vim/init/keymaps.vim | 33 ++++++++------ 3 files changed, 81 insertions(+), 84 deletions(-) (limited to 'vim/init') 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 set showtabline=2 " Side column -set number relativenumber +set number relativenumber " Cursor -" set cursorline +set cursorline set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20 set matchtime=2 @@ -223,15 +223,7 @@ set writebackup syntax enable set syntax=filetype set conceallevel=2 - -" Defualt highlight for matched parenthesis is so weird in many colorscheme -" Why the background color is lighter than my caret !? -" highlight MatchParen ctermfg=NONE ctermbg=darkgrey cterm=NONE -hi LuaParen ctermfg=NONE ctermbg=darkgrey cterm=NONE - -" Show trailing spaces -match ExtraWhitespace /\s\+$/ -hi ExtraWhitespace ctermbg=red guibg=red +set concealcursor= " }}} " 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 " }}} " Markdown {{{ - augroup Config_Markdown - au! - - au FileType markdown call InitMarkdownFile() - function! InitMarkdownFile() - setlocal wrap sw=2 ts=2 - let g:markdown_apply_heading_level = 0 - nnoremap \fl :let markdown_apply_heading_level = !markdown_apply_heading_levelzX - - let b:in_frontmatter = 0 - setlocal foldexpr=MarkdownLevel() foldmethod=expr - setlocal foldtext=MarkdownFoldTextHeading() - - call MarkdownHighlights() - endfunc - - function! MarkdownHighlights() - syn match MarkdownHtmlDetails '^
' conceal cchar=▶ - syn match MarkdownHtmlSummary '' conceal cchar= - syn match MarkdownHtmlSummaryEnd '' conceal - syn match MarkdownHtmlDetailsEnd '^
' conceal cchar=E - endfunc - - function! MarkdownLevel() - " For frontmatter - if v:lnum == 1 && getline(1) =~ '^---' - let b:in_frontmatter = 1 - return '>1' - endif - if b:in_frontmatter - if getline(v:lnum) =~ '^---' - let b:in_frontmatter = 0 - return '<1' - else - return '=' - endif - endif + au FileType markdown call InitMarkdownFile() + function! InitMarkdownFile() + setlocal wrap sw=2 ts=2 + let g:markdown_apply_heading_level = 0 + nnoremap \fl :let markdown_apply_heading_level = !markdown_apply_heading_levelzX + + let b:in_frontmatter = 0 + setlocal foldexpr=MarkdownLevel() foldmethod=expr + setlocal foldtext=MarkdownFoldTextHeading() + + call MarkdownHighlights() + endfunc + + function! MarkdownHighlights() + syn match MarkdownHtmlDetails '^
' conceal cchar=▶ + syn match MarkdownHtmlSummary '' conceal cchar= + syn match MarkdownHtmlSummaryEnd '' conceal + syn match MarkdownHtmlDetailsEnd '^
' conceal cchar=E + endfunc - " Fold for heading and the following contents - let hash_num = matchstr(getline(v:lnum), '^#\+') - if !empty(hash_num) - let foldlevel = g:markdown_apply_heading_level ? len(hash_num) - 1 : 1 - " HEADING - return len(hash_num) == 1 ? 0 : '>'.foldlevel + function! MarkdownLevel() + " For frontmatter + if v:lnum == 1 && getline(1) =~ '^---' + let b:in_frontmatter = 1 + return '>1' + endif + if b:in_frontmatter + if getline(v:lnum) =~ '^---' + let b:in_frontmatter = 0 + return '<1' else - " Contents - return "=" + return '=' endif - endfunc + endif - function! MarkdownFoldTextHeading() - " For frontmatter - if v:foldstart == 1 && getline(v:foldstart) =~ '^---' - return '===FrontMatter===' - endif + " Fold for heading and the following contents + let hash_num = matchstr(getline(v:lnum), '^#\+') + if !empty(hash_num) + let foldlevel = g:markdown_apply_heading_level ? len(hash_num) - 1 : 1 + " HEADING + return len(hash_num) == 1 ? 0 : '>'.foldlevel + else + " Contents + return "=" + endif + endfunc - " For heading, foltext() - let origin = split(MarkdownFoldText()[2:], ' ') - let heading = substitute(join(origin[:-3], ' '), '\#', ' ', 'g') - let lines = origin[-2][1:] - let fills = repeat('.', 48 - strwidth(heading) - len(lines)) - return heading.." "..fills.." "..lines - endfunc + function! MarkdownFoldTextHeading() + " For frontmatter + if v:foldstart == 1 && getline(v:foldstart) =~ '^---' + return '===FrontMatter===' + endif - augroup END + " For heading, foltext() + let origin = split(MarkdownFoldText()[2:], ' ') + let heading = substitute(join(origin[:-3], ' '), '\#', ' ', 'g') + let lines = origin[-2][1:] + let fills = repeat('.', 48 - strwidth(heading) - len(lines)) + return heading.." "..fills.." "..lines + endfunc " }}} " HTML {{{ @@ -255,9 +250,12 @@ augroup InitFileTypes function! SetPasswordFile() setlocal foldminlines=0 setlocal foldmethod=manual - setlocal foldtext="Password" + setlocal foldtext=PasswordFoldtext() norm! ggzfl endfunc + function! PasswordFoldtext() + return "---Password---" + endfunc " }}} " Beancount {{{ 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 / inoremap l " Set wrap -nnoremap \w :set wrap! +nnoremap \w :set wrap!:set wrap? " Fast saving function! s:WriteOrEnterFileName() - if !empty(expand('%')) | write! | else | call feedkeys(":w ") | endif + if !empty(bufname('%')) | write! | else | call feedkeys(":w ") | endif endfunction nnoremap w :call WriteOrEnterFileName() @@ -37,7 +37,7 @@ augroup vimrc_CRfix augroup END " Spell -nnoremap \sp :set spell!:set spell? +nnoremap \\sp :set spell!:set spell? " Show full path by default nnoremap 1 @@ -93,7 +93,6 @@ nnoremap 30h nnoremap 30l " File under the cursor -nnoremap gf nnoremap gF :e xnoremap iq i" @@ -160,6 +159,12 @@ inoremap :tablast " }}} " EDIT {{{ +" Set text width for auto wrapping +nnoremap tw :set fo+=t:e'set tw='..&tw + +" Set columns +nnoremap co :e'set columns='..&co + " Move one line up and down nnoremap ddp nnoremap ddkP @@ -247,8 +252,6 @@ vnoremap zF :call ToggleUnfoldSelection() " Resume nnoremap zF :call ToggleUnfoldSelection()zv -vnoremap \z :call GrayOutOthers() - " Select current fold onoremap az :silent! keepjumps normal![zV]z xnoremap az :silent! keepjumps normal![zV]z @@ -298,6 +301,8 @@ function! GrayOutOthers() call setpos('.', pos) endif endfunction +vnoremap \z :call GrayOutOthers() +nnoremap \z :call GrayOutOthers() " }}} " REGISTER {{{ @@ -481,7 +486,7 @@ function! CloseBufferSafely() endif let bufnr = bufnr() - if !has_key(t:, 'bufs') || len(t:bufs) == 1 + if !has_key(t:, 'bufs') || len(t:bufs) <= 1 " Close tab for last buffer tabclose else @@ -621,10 +626,10 @@ endfunc " }}} " TERMINAL {{{ -" Use z to toggle +" Use z to toggle window padding for alacritty let g:alacritty_extra_padding = 0 -function! ToggleWinPadding() - if g:alacritty_extra_padding +function! ToggleWinPadding(padding) + if g:alacritty_extra_padding && !a:padding !alacritty msg config --window-id $WINDOWID --reset call SetEmulaterBackground() hi EndOfBuffer None @@ -638,12 +643,14 @@ function! ToggleWinPadding() exe "hi EndOfBuffer guifg="..bg_color.." guibg="..bg_color exe "hi MsgArea guibg="..bg_color endtry - exe "!alacritty msg config --window-id $WINDOWID window.padding.x=270 'colors.primary.background=\"\\"..bg_color.."\"'" + + let padding = a:padding ? a:padding : "270" + exe "!alacritty msg config --window-id $WINDOWID window.padding.x=" . padding . " 'colors.primary.background=\"\\"..bg_color.."\"'" endif let g:alacritty_extra_padding = !g:alacritty_extra_padding endfunc -nnoremap z silent call ToggleWinPadding() +nnoremap z ":\ silent call ToggleWinPadding(" . v:count . ")\" " In case ALT key is not working " execute "set =\e2" @@ -666,7 +673,7 @@ nnoremap z silent call ToggleWinPadding() " HIGHLIGHT {{{ nnoremap I :Inspect -nnoremap \sy exists("g:syntax_on") ? ":syntax off " : ":syntax enable" +nnoremap \s exists("g:syntax_on") ? ":syntax off " : ":syntax enable" " Toggle conceallevel0/2 nnoremap \c ":set conceallevel="..(&cole ? 0 : 2)..":set cole?" -- cgit v1.2.3-70-g09d2