Search 搜索图案并在gvim中折叠匹配线
嗨 我想在搜索后折叠一组行,如下所示 还可以通过以下步骤使用鼠标打开和关闭折叠: 单击“+”打开此行的闭合折叠 单击任何其他非空字符以关闭此行打开的折叠 我要搜索,单击并折叠所有匹配的行 还可以通过以下步骤使用鼠标打开和关闭折叠: +- 有一种方法可以折叠vim中不匹配的模式,在搜索模式后,我们可以通过\z键折叠不匹配的模式 nnoremap\z:setlocal foldexpr=getlinev:lnum=~@/?0:getlinev:lnum-1=~@/\\\\\\\\\\\\\\\\;getlinev:lnum+1=~@/?1:2 foldmethod=expr foldlevel=0 foldcolumn=2Search 搜索图案并在gvim中折叠匹配线,search,vim,collapse,code-folding,Search,Vim,Collapse,Code Folding,嗨 我想在搜索后折叠一组行,如下所示 还可以通过以下步骤使用鼠标打开和关闭折叠: 单击“+”打开此行的闭合折叠 单击任何其他非空字符以关闭此行打开的折叠 我要搜索,单击并折叠所有匹配的行 还可以通过以下步骤使用鼠标打开和关闭折叠: +- 有一种方法可以折叠vim中不匹配的模式,在搜索模式后,我们可以通过\z键折叠不匹配的模式 nnoremap\z:setlocal foldexpr=getlinev:lnum=~@/?0:getlinev:lnum-1=~@/\\\\\\\\\\\\\\\\;g
有没有相反的选择?找到一个模式并崩溃?我从reddit vim论坛上的reddit用户那里得到了这个问题的答案
希望对您有所帮助。我正在使用neovim的以下配置,我认为它也应该适用于常规vim: \z:上次搜索中的折叠匹配表达式 \Z:折叠与上次搜索不匹配的任何内容 当我想看到所有评论或根本没有评论时,它非常有用, 首先执行\并搜索“^”,如果这是您的语言的注释开始符号,请点击回车键,然后按上述步骤进行折叠 编辑:如果需要,您可能需要添加以下内容以将折叠重置回手动:
nnoremap\F:setLocalFoldMethod=manualsdkks这一个很简单。当我在vimrc中在您的2个命令之后设置foldmethod=manual命令时,我无法展开它。如果我想打开,是否每次都需要在vim窗口中手动重新设置?。折叠仅限于一次搜索,我们是否可以将其扩展到多个搜索模式。@EashwarGadanchi在将method设置为manual with\F后,您可以使用zE展开所有内容。如果我没弄错的话,你每次都想用不同的搜索来累积折叠,恐怕用这个简单的方法是不可能的,因为command是根据特定的表达式来搜索和折叠所有的东西。我会为那个高级用例寻找一个插件。我还没试过。
function! FoldSearchPattern() abort
if !exists('w:foldpatterns')
let w:foldpatterns=[]
setlocal foldmethod=expr foldlevel=0 foldcolumn=2
endif
if index(w:foldpatterns, @/) == -1
call add(w:foldpatterns, @/)
setlocal foldexpr=SetFolds(v:lnum)
endif
endfunction
function! SetFolds(lnum) abort
for pattern in w:foldpatterns
if getline(a:lnum) =~ pattern
if getline(a:lnum + 1) !~ pattern
return 's1'
else
return 1
endif
endif
endfor
endfunction
nnoremap \z :call FoldSearchPattern()<CR>
nnoremap \Z :setlocal foldexpr=(getline(v:lnum)=~@/)?0:1 foldmethod=expr foldlevel=0 foldcolumn=2 foldminlines=0<CR><CR>
nnoremap \z :setlocal foldexpr=(getline(v:lnum)=~@/)?1:0 foldmethod=expr foldlevel=0 foldcolumn=2 foldminlines=0<CR><CR>