Vim - 命令行 - 上一个和下一个命令键映射
Vim - Command Line - previous and next command key mapping
当打开命令行并按向上箭头或向下箭头键时,它会显示上次输入的命令。有没有办法映射这种行为?例如,当我按下 ctrl p
时,我希望 vim 显示我之前的命令(让 vim 就像我按下向上箭头一样)。下一个命令的 ctrl n
也是如此。
我怎样才能做到这一点?
CTRL-P
和CTRL-N
击键已经做你想做的,他们搜索你的命令历史。请参阅 :help c_CTRL-P
,其中解释了它将如何 "recall older command-line from history."
CTRL-P
和 CTRL-N
的工作方式与向上和向下箭头略有不同,因为箭头只会遍历历史记录中以您键入的字符开头的项目。因此 :e
、space,向上箭头将转到您用于打开文件进行编辑的最后一个命令。有关详细信息,请参阅 :help c_<Up>
。
您可以使用 cnoremap
命令重新映射它们,以便它们与对应的对象执行相同的操作,该命令为在 Vim 命令行中键入的击键创建映射。
例如,要使 CTRL-P
和 CTRL-N
的行为与箭头相同(完全尊重前缀),您可以使用以下命令创建(有点天真)映射:
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
这种方法的缺点是 CTRL-P
和 CTRL-N
在 wildmenu 上的行为不同,因此更完整的映射是:
cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"
这将在 wildmenu 中保留 CTRL-P
和 CTRL-N
的原始行为。
当打开命令行并按向上箭头或向下箭头键时,它会显示上次输入的命令。有没有办法映射这种行为?例如,当我按下 ctrl p
时,我希望 vim 显示我之前的命令(让 vim 就像我按下向上箭头一样)。下一个命令的 ctrl n
也是如此。
我怎样才能做到这一点?
CTRL-P
和CTRL-N
击键已经做你想做的,他们搜索你的命令历史。请参阅 :help c_CTRL-P
,其中解释了它将如何 "recall older command-line from history."
CTRL-P
和 CTRL-N
的工作方式与向上和向下箭头略有不同,因为箭头只会遍历历史记录中以您键入的字符开头的项目。因此 :e
、space,向上箭头将转到您用于打开文件进行编辑的最后一个命令。有关详细信息,请参阅 :help c_<Up>
。
您可以使用 cnoremap
命令重新映射它们,以便它们与对应的对象执行相同的操作,该命令为在 Vim 命令行中键入的击键创建映射。
例如,要使 CTRL-P
和 CTRL-N
的行为与箭头相同(完全尊重前缀),您可以使用以下命令创建(有点天真)映射:
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
这种方法的缺点是 CTRL-P
和 CTRL-N
在 wildmenu 上的行为不同,因此更完整的映射是:
cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"
这将在 wildmenu 中保留 CTRL-P
和 CTRL-N
的原始行为。