Vim don';t在未找到上停止映射

Vim don';t在未找到上停止映射,vim,macros,Vim,Macros,vim映射有一个重要部分: :映射rf{^ 我注意到,当在行中找不到{字符时,就不会执行其余的映射 有没有办法,即使找不到搜索字符,如何强制映射继续?(在本例中,执行返回到文件开头)是,Vim会中止映射中的错误。您可以使用:silent!normal!…继续,而不考虑错误。通过一系列:normal!命令,您甚至可以检查(例如光标是否移动)并对其作出反应。草图: :map <C-j>r :exe 'normal! maf{'<Bar>if getpos("'a") ==

vim映射有一个重要部分:

:映射rf{^

我注意到,当在行中找不到
{
字符时,就不会执行其余的映射


有没有办法,即使找不到搜索字符,如何强制映射继续?(在本例中,执行返回到文件开头)

是,Vim会中止映射中的错误。您可以使用
:silent!normal!…
继续,而不考虑错误。通过一系列
:normal!
命令,您甚至可以检查(例如光标是否移动)并对其作出反应。草图:

:map <C-j>r :exe 'normal! maf{'<Bar>if getpos("'a") == getpos(".")<Bar>echo "no move"<Bar>endif<CR>
:map r:exe'normal!maf{'if getpos('a')==getpos(“.”)echo“no move”endif
请注意,这不能很好地扩展。最好将命令移动到
:函数中

;它使映射不受重新映射和递归的影响

这个问题的字面答案是:

:map r:silent!exe“normal f{^”

1,这不是宏,它是一个映射。您可以粘贴完整的map cmd以便我们可以看到您想要做什么吗?现在您只需要移动到
{
然后转到第一个非空,这没有任何意义。这没有意义,但它的行为仍然像他描述的那样,这对我来说似乎很奇怪。@Kent感谢你纠正了我的术语,改为
映射
。我刚刚发布了
映射的相关部分,我认为它在不知道上下文的情况下是可以回答的。我不想这样做在这里解释一下,因为我试图将问题归结为本质。谢谢,我实际上需要玩一段时间,直到找到真正的解决方案,所以我把它包括在了答案中。