我正尝试从Ex模式执行普通模式命令Ctrl-n
或j
。通常,可以使用:normal
命令执行此操作。例如,以下命令将光标向下移动一行。
:normal j
以下命令也是如此。注意:按^N
键入Ctrl-v Ctrl-n
。
:normal ^N
但以下命令不起作用。该命令似乎对缓冲区没有影响。
:normal <C-n>
但是,当我使用以下命令为Ctrl-n
创建一个新的Ex命令时,它可以工作!
:command Down <C-n>
即使这样也行,但normal
在这里是多余的。
:command Down normal <C-n>
现在,我可以使用Ex命令:Down
将光标向下移动一行。
我的问题是为什么<C-n>
语法不适用于:normal
命令但适用于:command
命令?
答案 0 :(得分:4)
使用:exec
并转义<c-x>
:
例如:
:exec "normal \<c-n>"
实际上您可以在:h :normal
帮助文档中找到指令:
to use |:execute|, which uses an
expression as argument. This allows the use of
printable characters to represent special characters.
Example: >
:exe "normal \<c-w>\<c-w>"
答案 1 :(得分:-1)
您的问题可能是学术性的(或者您正试图解决另一个问题)但是,对于它的价值,您已经可以:+
和:join
。