Vim normal命令发送字面值<Space>字符串而不是空格字符

3

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

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

当我执行这个命令时,我想要的最终结果是:
### word

但我得到的是这个:
###<Space>word
2个回答

8

Vim的:normal在处理稍微复杂的内容时会让人崩溃。我不记得为什么,但这是实现你想要的最简单的方法。你需要在传递给execute的字符串中转义开头的<。

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.

5

首先解释一下vim命令:

  • :normal! 将剩余的命令作为普通模式运行
  • I 从行首进入插入模式 <shift> + i
  • ###<Space><Esc> - 在插入模式下输入字符###<Space><Esc>(注意,如果你只是进入插入模式并键入###<space><esc>,你将得到这个字面上的字符串。)

当命令执行完后,你会注意到它仍然处于普通模式。这意味着你的命令可以省略<space><esc>并直接输入空格:

:norm! I### 

(最后一个哈希标记后面有多余的空格)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接