我们的想法是有一个映射,允许我折叠用大括号括起来的代码块。
nnoremap zff 0f{zf%
这可以按预期工作,但仅适用于左大括号。只要{和}在同一行,下面的版本似乎就可以工作。如果它们在不同的行上,尽管光标只跳到开头{并且没有创建折叠。
nnoremap zff 0f{f}zf%
编辑:
问题似乎是,一旦其中一个运动命令出现错误,贴图就会中断。:silent!
防止ex命令在出现错误时破坏映射。运动命令有等效项吗?
您的第一个映射应该可以工作,除非您有文件类型检测或语法问题,无法进行正确的配对。
第二个映射无法工作,因为f
(和FtT
)只能在当前行上工作。备选方案:
f{v/}<CR>zf
f{zf/}<CR>
但是您可以将zf
与文本对象一起使用:
zfi{
zfat
zfip
那么…为什么要麻烦绘制地图呢?
命令序列中的错误会破坏序列,这通常是正确的。如果您想在出现错误的情况下继续,只需通过:normal!
单独执行命令即可。这可以通过:execute
:链接到单个命令行中
nnoremap zff :exe 'normal! 0f{' | exe 'normal! f}' | exe 'normal! zf%'