使 vim 的 {} 动作跳过折叠

Jef*_*.D. 3 vim

我喜欢 vim{}动作,它们跳到下一个/上一个空行。

我最近更多地使用折叠,虽然这是一个很棒的功能,但它在{}动作方面并没有达到我的预期。如果折叠中有空行,则{}将落在那里,从而打开折叠。

有没有办法重新映射{}完全跳过折叠?也就是说,即使有一个折叠内空行,{}不会停在那里,但将寻求在未来展开的空行?这将更符合我的期望。

rom*_*inl 8

第一个问题:

您必须block从默认值中删除'foldopen'

set foldopen-=block
Run Code Online (Sandbox Code Playgroud)

:help 'foldopen'

第二个问题:

你可以试试这些映射

nnoremap <expr> } foldclosed(search('^$', 'Wn')) == -1 ? "}" : "}j}"
nnoremap <expr> { foldclosed(search('^$', 'Wnb')) == -1 ? "{" : "{k{"
Run Code Online (Sandbox Code Playgroud)