Vim正常!发送文字<space>字符串而不是空格字符

时间:2017-08-20 16:33:53

标签: vim

我不确定我在这里做错了什么。

:normal! I###<Space><Esc>

当我对一个单词执行此命令时,我想要的最终结果是:

### word

但我得到了这个:

###<Space>word

2 个答案:

答案 0 :(得分:5)

Vim&#39; :normal是一场噩梦,任何事情都会有些复杂。我不记得为什么,但这是获得你想要的最简单方法。你需要逃离开幕&lt;在传递给执行的字符串中。

execute "normal! I###\<Space>\<Esc>"

编辑:Vim并没有真正解释原因,但:help normal

        An alternative is to use |:execute|, which uses an
        expression as argument.  This allows the use of
        printable characters to represent special characters.

答案 1 :(得分:5)

让我们先解释一下vim命令:

  • :normal!以正常模式运行其余命令
  • I从行<shift> + i
  • 的开头输入插入模式
  • ###<Space><Esc> - 从字面上输入字符###<Space><Esc>,因为我们处于插入模式(请注意,如果您只是输入插入模式,并输入###<space><esc>,那么您将获得字面意思。)

当此命令完成时,您将注意到它仍然处于正常模式。这意味着您的命令可以省略<space><esc>并按字面输入空格:

:norm! I### 

(最后一次哈希后有一个额外的空格)