我不确定我在这里做错了什么.
:normal! I###<Space><Esc>
Run Code Online (Sandbox Code Playgroud)
当我对一个单词执行此命令时,我想要的最终结果是:
### word
Run Code Online (Sandbox Code Playgroud)
但相反,我得到了这个:
###<Space>word
Run Code Online (Sandbox Code Playgroud)
Vim :normal是一场噩梦,任何事情都要复杂得多.我不记得为什么,但这是获得你想要的最简单方法.你需要在传递给执行的字符串中转义<.
execute "normal! I###\<Space>\<Esc>"
Run Code Online (Sandbox Code Playgroud)
编辑: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.
Run Code Online (Sandbox Code Playgroud)
让我们首先解释一下vim命令:
:normal! 以正常模式运行其余命令I 从行的开头进入插入模式 <shift> + i###<Space><Esc>- 从###<Space><Esc>字面上键入字符,因为我们处于插入模式(注意,如果你只是输入插入模式,然后输入###<space><esc>,你就会得到字面意思.)当此命令完成时,您将注意到它仍然处于正常模式.这意味着您的命令可以省略<space><esc>并按字面输入空格:
:norm! I###
Run Code Online (Sandbox Code Playgroud)
(最后一个哈希后有一个额外的空格)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |