Search a pattern and fold the matching lines in gvim

Multi tool use
Multi tool use
The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP


Search a pattern and fold the matching lines in gvim



Hi ,



I want to fold set of lines after search as follows,



The mouse can also be used to open and close folds by following steps:



Click on a '+' to open the closed fold at this row.



Click on any other non-blank character to close the open fold at this row



I want to search click and collapse all matching lines.



The mouse can also be used to open and close folds by followingsteps:



+--



There is a method to collapse the patterns which are not matching in vim , after searching a pattern we can collapse non matching patterns by "z" key .



nnoremap z :setlocal foldexpr=(getline(v:lnum)=~@/)?0:(getline(v:lnum-1)=~@/)\|\|(getline(v:lnum+1)=~@/)?1:2 foldmethod=expr foldlevel=0 foldcolumn=2<CR>

Is there any option to do the opposite? Just find a pattern and collapse?


nnoremap z :setlocal foldexpr=(getline(v:lnum)=~@/)?0:(getline(v:lnum-1)=~@/)\|\|(getline(v:lnum+1)=~@/)?1:2 foldmethod=expr foldlevel=0 foldcolumn=2<CR>




1 Answer
1



I got an answer to this question from reddit user on reddit vim forum.



https://www.reddit.com/r/vim/comments/91qz90/search_a_pattern_and_fold_the_matching_lines_in/


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>



Hope it is helpful.






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

BQKk hzFn1L3RFV fK25F 0cwo5m fRAEr0 eGTNWDpqNk C,r1rqwXX7afG82WY20N,3VpXshknaUuthkyhT
feGozYr

Popular posts from this blog

Makefile test if variable is not empty

Visual Studio Code: How to configure includePath for better IntelliSense results

Will Oldham