原因:执行在Vim中没有按预期工作:LearnVimscriptTheHardWay

时间:2012-08-24 19:26:41

标签: vim

我正在尝试从LearnVimscriptTHW学习Vimscript,我遇到了:execute and :normal的使用。

Example from 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。那么,为什么我的情况不会发生。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

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

另一种选择是“按字面意思”输入密钥:

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

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