5

我正在尝试从中学习 Vimscript,LearnVimscriptTHW并且遇到了:execute and :normal.

来自 LVSTHW 的示例

: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。那么,为什么在我的情况下没有发生。

4

2 回答 2

6

您需要<cr>使用反斜杠转义:exe "norm! iHello\<cr>World"

于 2012-08-24T19:46:34.620 回答
5

看看:help :execute可能有用,在这里。当你在表达式中使用它们时,你必须使用反斜杠转义它们: <CR>, ... 如果我理解正确,这些符号仅在映射中有效。<ESC>\<CR>\<Esc>

另一种选择是输入“字面”键:

  • i进入插入模式,如果你在命令行上则不需要
  • <C-v>
  • <CR>

您将获得一个看起来像^M并且不需要转义的单个字符。

于 2012-08-24T19:53:25.237 回答