为什么使用控制键的<c-n>语法适用于:command命令但不能使用:normal命令?</c-n>

时间:2014-05-11 15:51:02

标签: vim

我正尝试从Ex模式执行普通模式命令Ctrl-nj。通常,可以使用: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命令?

2 个答案:

答案 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