我不确定我在这里做错了什么。
:normal! I###<Space><Esc>
当我对一个单词执行此命令时,我想要的最终结果是:
### word
但我得到了这个:
###<Space>word
答案 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###
(最后一次哈希后有一个额外的空格)