我正在努力学习Vimscript,LearnVimscriptTHW
并且我遇到了使用:execute and :normal
.
:normal! gg/a<cr>
Run Code Online (Sandbox Code Playgroud)
从书中:
问题是normal!
不承认"特殊字符"之类的<cr>
.有很多方法可以解决这个问题,但最容易使用和阅读的方法是execute
.
现在,当我使用:execute "normal! gg/a<cr>"
它时,对我来说不起作用.它不会a(char)
在我当前的文件中搜索而不是它只是执行gg
而不是什么都不做,但如果使用:execute "normal! gg/a\r"
它可以工作并成功突出显示char a
在我的文件中.
我也尝试了下面的方法,但没有一个工作.
:execute "normal! gg/a"<cr>
:execute normal! gg/a<cr>
:execute "normal! gg/a<cr>"<cr>
Run Code Online (Sandbox Code Playgroud)
从书中可以看出execute
内部转换<cr> to \r
.那么,为什么它不会发生在我的情况下.
在:help :execute
这里看一下可能有用.你必须转义任何<CR>
或<ESC>
有当您在表达式中使用反斜杠:\<CR>
,\<Esc>
...这些标记,只适用于映射,如果我理解正确.
另一个选择是输入"字面上"键:
i
进入插入模式,如果您在命令行上,则不需要<C-v>
<CR>
您将获得一个看起来像^M
并且不需要转义的单个字符.