Vim命令行模式-如何确认选择?

44u64gxh  于 2022-11-11  发布在  其他
关注(0)|答案(4)|浏览(170)

在zsh中,如果你在你的home目录中输入ls <Tab>,它会显示你的home目录中所有非隐藏的文件,然后每个<Tab>都会循环显示文件名。
当当前突出显示的文件名是我想要的文件名时,如果该项是一个目录,我键入/以确认我的选择,如果它是一个文件,我使用<Space>
正如this post所指示的,我在.vimrc中添加了这两行代码,以给予类似于vim zsh的补全。

set wildmode=longest,list,full
set wildmenu

但是当vim在选项之间循环时,我如何确认一个选择呢?
就像在我的home目录中我启动了vim,和:e+一些标签,当选择在我的document目录中时,我如何确认它?<Enter>将完成命令,<Esc><C-c>取消它,而/附加了一个反斜杠,所以命令变成了:e document//--不是我想要的。

iecba09b

iecba09b1#

从vim文档(:help wildmenu):

While the "wildmenu" is active the following keys have special meanings:

[...]
<Down> - in filename/menu name completion: move into a subdirectory or submenu
[...]

所以我认为这至少能部分满足你的需求。

dffbzjpn

dffbzjpn2#

以防万一其他人(像我)在这里结束,觉得像@杰夫回答不觉得真的像活力。
我发现Ctrl + D确实完成了OP要求的任务。更多信息请参见:help cmdline-completion

qv7cva1a

qv7cva1a3#

我使用<space>进行选择。

cnoremap <expr> <space>  wildmenumode()?"\<space>\<BS>":"\<space>"
h9vpoimq

h9vpoimq4#

老帖子,但我在寻找相同的答案。根据:help wildmenu

CTRL-Y      - accept the currently selected match and stop
              completion.

相关问题