我正在尝试从LearnVimscriptTHW
学习Vimscript,我遇到了:execute and :normal
的使用。
:normal! gg/a<cr>
来自书:
问题是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>
从书中可以看出execute
内部转换了<cr> to \r
。那么,为什么我的情况不会发生。
答案 0 :(得分:5)
您需要使用反斜杠转义<cr>
:exe "norm! iHello\<cr>World"
答案 1 :(得分:5)
在这里查看:help :execute
可能很有用。当您在表达式中使用反义词时,必须使用反斜杠转义任何<CR>
或<ESC>
:\<CR>
,\<Esc>
...如果我理解正确,这些符号仅在映射中有效
另一种选择是“按字面意思”输入密钥:
i
进入插入模式,如果你在命令行上则不需要<C-v>
<CR>
您将获得一个看起来像^M
且不需要转义的单个字符。