Vim路径自动补全,如何进入目录?

8
当我想在vim中打开一个文件时,输入:e以查看磁盘上的目录(设置了wildmenu)。Vim向我展示了我拥有的目录列表,然后我按tab键几次选择我需要的目录,当我选择了那个目录(vim会将其高亮显示)之后,该怎么停止当前级别的自动完成并进入该目录呢?
我知道在插入模式下,自动完成是ctrl-y。从vim帮助文件中可以得到如下信息:
                        *complete_CTRL-Y*
When the popup menu is displayed you can use CTRL-Y to stop completion and
accept the currently selected entry.  The CTRL-Y is not inserted.  Typing a
space, Enter, or some other unprintable character will leave completion mode
and insert that typed character."

如何在命令模式下执行该操作?

3个回答

17
我认为在命令模式下按Ctrl E
来自vim文档
                        *complete_CTRL-E*

当自动完成正在进行时,您可以使用CTRL-E停止它并返回最初键入的文本。 CTRL-E不会被插入。

我在我的gVim中尝试过这个功能,它有效。

编辑: 感谢@François的建议,Ctrl D也可以实现同样的功能,并提供一些额外信息,即它可以停止当前级别的自动完成,同时显示当前选择的内容。

类似于:

:e eclipse-cpp-indigo-SR2-incubation-win32-x86_64\eclipse\ <Ctrl><D>
artifacts.xml   eclipse.exe     epl-v10.html    p2\
configuration\  eclipse.ini     features\       plugins\
dropins\        eclipsec.exe    notice.html     readme\

它显示了eclipse文件夹中的内容,并且除了在eclipse目录级别上停止完成之外,还会继续往下。


5
请注意,按下Ctrl-D键具有同样的效果,但还将列出文件夹的内容。更一般地说,它会“列出与光标前面的模式匹配的名称”(参见::help c_ctrl-D)。 - François
@François 谢谢伙计!我更新了我的答案以反映你的建议。 - Pavan Manjunath
2
嘿,再说一条:向下箭头也可以做到这一点,并在选择的目录中切换到wildmenu :) (向上箭头移动到父目录,请参见:help 'wildmenu') - François

2
当您按下tab键到达所需的目录时,请按右箭头键(或输入一个字符并删除)。完成后,请将该目录用作基本目录,并遍历其子目录。
例如,当前目录中有以下文件结构:
- a - b - c - d
您键入e命令并按tab键。第一个建议的目录是a。再次按tab键选择下一个目录-b。现在按右箭头键。之后,在b目录中选择并开始完成。
如我之前所说,您可以输入一个字符并删除它。如果留下一个字符(或一系列字符,例如前缀),它将用作过滤器(仅选择名称以前缀开头的目录)。
我认为还有其他解决方案。但上述两种对我来说已经足够了。

1
这是我现在所做的,但在我的看法中并不有效。我认为应该有更好的方法来做到这一点。 - m.silenus
抱歉,我没有完全理解您的问题。 - Yevhen Pavliuk

1

还有一个选项:当我想选择并继续时,我只需输入另一个“/”,然后继续按制表键。这在我的状态栏中看起来有点丑,但这只需要一个按键操作,而我也不必离开我的主键区。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接