|
是光标位置,则可以在普通模式下使用cw""<Esc>P
轻松引用该单词。我的问题是如何对命令行模式说我要键入
<Esc>
。我尝试了:norm cw""<Esc>P
和其他一些变体,但只得到了""<Esc>P
而不是"below"
。仍然与此相关的是,我想知道如何使命令行模式键入Ctrl命令。例如,我可以用cw"<C-r>""<Esc>
引用上述单词。但随后我需要命令行为我输入<C-r>
。我该怎么办?#1 楼
<C-v>
是您的寻找。它允许您输入文字字符(例如,文字Esc
而不是字符串“ Esc”)而无需转义任何内容。:norm cw""<C-v><Esc>P
显示为: />
:norm cw""^[P
并会做你想做的事(即引用这个词)。您也可以将其与其他
<C-?>
映射一起使用。例如,您的第二个请求::norm cw"<C-v><C-r>""
显示为:
:norm cw"^R""
,结果将相同如上所述。无需在末尾添加额外的
Esc
。#2 楼
这是因为<Esc>
之类的特殊键不会在normal
命令中转换,并且会像按exec
命令。像这样::exec "norm cw\"\"\<Esc>P"
请注意,必须在引号和
<Esc>
之前加反斜杠,并且不能使用单引号而不是双引号。评论
这也适用于Ctrl命令吗?我应该如何在命令中编写它们?
–贡萨洛·里贝罗(GonçaloRibeiro)
15年3月22日在17:05
是的,应该可以。您可以这样写:“ \
–EvergreenTree
15年3月22日在17:58
#3 楼
命令行模式不同;您不能在那里使用相同的(普通模式)编辑命令。您可以在:help c_CTRL-V
上找到命令列表。现在,有命令行窗口(
:help command-line-window
),可以从普通模式下的q:
和命令行模式下的<C-F>
输入。在该窗口中,您可以使用所有常规命令和映射,因此将成为选项1。选项2是命令行模式的特殊映射。如我所说,您不能通过
:normal
等使用此方法。定义它们的关键是:help c_CTRL-\_e
映射,该映射“评估{expr}并将整个命令行替换为结果”。这是一个仅在命令行末尾才能正常工作的简单示例::cnoremap <F1> <C-\>esubstitute(getcmdline(), '\w\+$', '"&"', '')<CR>
评论
我认为OP并不是要为命令行创建映射,而是要从命令行执行映射。
–EvergreenTree
15年3月22日在18:50
评论
就像readline中有