vim vimscript:autoCMD将foldcolumn设置为foldlevel

问题描述 投票:0回答:1
我的目标是自动设置

foldcolumn

最深
foldlevel.。 我尝试了:

autocmd FileType html :set foldmethod=syntax autocmd FileType html :let &foldcolumn=&foldlevel 但显示错误:

  
在处理“ HTML”的FileType Autocomands时检测到Error: e521:需要的数字=:foldcolumn =&foldlevel

方法是:

1st:仅设在.vimrc中:

autocmd FileType html :set foldmethod=syntax

执行下一个地图打开缓冲区:

nnoremap <leader>cf  :let &foldcolumn=&foldlevel<cr>:set foldcolumn?<cr>

或增加1次

nnoremap <leader>cf :let &foldcolumn = &foldcolumn + 1<cr>:set foldcolumn?<cr>
,如果它是自动的,那可能很棒。如何解决错误?预先感谢
    

工作室

" Find the deepest fold level in the buffer function! GetDeepestFoldLevel() " foldlevel is foldcolumn of current line let max_level = 0 for lnum in range(1, line('$')) let level = foldlevel(lnum) if level > max_level let max_level = level endif endfor return max_level endfunction " Check if foldcolumn should be updated function! ShouldUpdateFoldColumn() return !exists('b:foldcolumn_set') || !b:foldcolumn_set endfunction " Update foldcolumn function! UpdateFoldColumnForce() let &foldcolumn = GetDeepestFoldLevel() + 1 endfunction function! UpdateFoldColumn() if ShouldUpdateFoldColumn() call UpdateFoldColumnForce() endif endfunction " Check if foldcolumn is set by modeline and mark it as set function! CheckFoldColumnSet() " Set buffer variable to 1 if foldcolumn is explicitly set (not default value 0). " Counterparts: " - if modeline has 'foldcolumn=0' then it is ignored. " - foldcolumn set of autocmd set to a none zero value like next, makes next always false. " autocmd FileType javascript :set foldcolumn=2 if &foldcolumn != 0 let b:foldcolumn_set = 1 endif endfunction " Auto-update foldcolumn AFTER modeline processing (using BufWinEnter) autocmd BufWinEnter * call CheckFoldColumnSet() | call UpdateFoldColumn() " ColumFold to Maximun foldlevel nnoremap <leader>cfM :call UpdateFoldColumnForce()<CR> " Check: " :echo 'foldcolumn=' &foldcolumn '; foldlevel_current_line_or_deepest_been=' &foldlevel " Check. Show '-1' if foldcolumn is not explicitly set: " :echo get(b:, 'foldcolumn_set', -1)

vim editor vim-plugin fold neovim
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.