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

Ran*_*Rag 5 vim

我正在努力学习Vimscript,LearnVimscriptTHW并且我遇到了使用:execute and :normal.

LVSTHW的示例:

: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.那么,为什么它不会发生在我的情况下.

Con*_*ner 5

你需要<cr>用反斜杠来逃避:exe "norm! iHello\<cr>World"


rom*_*inl 5

:help :execute这里看一下可能有用.你必须转义任何<CR><ESC>有当您在表达式中使用反斜杠:\<CR>,\<Esc>...这些标记,只适用于映射,如果我理解正确.

另一个选择是输入"字面上"键:

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

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