防止地图因运动命令错误而中断



我们的想法是有一个映射,允许我折叠用大括号括起来的代码块。

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%'

最新更新