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