Answers:
这是因为诸如之类的特殊键<Esc>
不会在normal
命令中转换,而是像按一样对待<Esc>。要解决此问题,可以使用exec
命令。像这样:
:exec "norm cw\"\"\<Esc>P"
请注意,您必须在引号和之前加上反斜杠<Esc>
,并且不能使用单引号而不是双引号。
"\<C-{insert key}>"
命令行模式不同;您不能在那里使用相同的(普通模式)编辑命令。您可以在找到命令列表:help c_CTRL-V
。
现在,有一个命令行窗口(:help command-line-window
),可以从普通模式q:
和<C-F>
命令行模式输入。在该窗口中,您可以使用所有常规命令和映射,因此这将是选项1。
选项2是命令行模式的特殊映射。如我所说,您不能通过:normal
et al 使用此方法。定义它们的关键是:help c_CTRL-\_e
映射,它“评估{expr}并用结果替换整个命令行”。这是一个简单的示例,仅在命令行末尾才能正常工作:
:cnoremap <F1> <C-\>esubstitute(getcmdline(), '\w\+$', '"&"', '')<CR>
<C-x><C-e>
在readline中可以在中编辑命令行一样$EDITOR
,<C-f>
在Vim中您也可以打开命令行窗口。请参阅:help cmdline-window
。