在Vim插入模式下,是否可以添加文件路径自动完成功能?


81

我写了很多shell脚本,而且我经常要输入文件路径。我想知道是否有人知道在插入模式下让Vim自动完成文件路径的方法,就像当您在自己喜欢的shell中时一样,使用制表符来完成目录或文件的路径。

如果可以CTRLD将Shell的功能置于Vim插入模式下(例如,查看当前路径中的文件/目录),则可以多加功劳。


一个有趣的问题,我也想知道答案:)
Jay Zeng

@stephenmm Ctrl-D在您的shell中做什么?在我的bash shell中,当我输入一些文本时它什么都不做,否则关闭终端。
alhelal '18

@alhelal-似乎CTRL-D会在我的一些旧外壳中显示文件和目录。我看不到任何CTRL-D功能了。
stephenmm

Answers:


162

对于全名的文件名,可以使用:

Ctrl- XCtrl-F


11
另一个vim aha时刻....谢谢。无论如何,我
都不

4
插入模式下<tab>的另一个好用法是<cn>。这将根据您正在处理的文件中的其他单词自动完成您输入的单词。输入变量或类名时,我一直都在使用它。
德里克

有什么方法可以影响搜索路径?在C文件中添加#include条目时,路径可能与您从中打开文件的位置无关。
罗布·布拉德福德

@RobBradford尝试YouCompleteMe,如果提供了正确的信息(例如,我使用由YCM-Generator生成的.ycm_extra_conf.py,它使用基于cmake的构建系统),它将很好地自动完成包含文件夹中的任何路径名。
Emile Vrijdags,2017年

文件名中包含空格时,Vim无法自动完成。有办法解决吗?
吉恩(Jean)


18

以@CMS和@michael出色的答案为基础

使用ctrl+ X ctrl+f命令序列时,它将显示当前目录中的文件列表。我花了一分钟时间寻找在不同文件名之间上下移动的右键。正确的键是Ctrl-n和Ctrl-p。您几乎可以使用其他任何键(例如Space)来选择并继续输入。

另外,如果您还没有要插入的文件/目录,则可以按如下方式查看文件树结构:

  1. (可选)输入目录的某些部分。您甚至可以使用../../
  2. ctrl+ X ctrl+f并从列表中选择树中的第一项。
  3. 下一步,再次按ctrl+ f,同时突出显示正确的项目,以显示目录树结构下一级的列表。

您可以继续执行此操作,直到找到要在文档中插入的目录/文件。


6
在步骤3中,您的意思是ctrl + x和ctrl + f吗?因为仅ctrl + f对我不起作用,所以它与ctrl + n一样。顺便说一句,如果目录中有空格:/,则在这里不起作用。您知道解决方法吗?
Rojo 2014年

0

我遇到了类似的问题。我找到了像这样的解决方案:

    sudo apt-get install realpath

并在VIM naviagte中以普通模式键入文件:

    :r !realpath /path/to/file

在!realpatch之后以非插入模式导航时,您可以使用我们的按键。

瞧!TAB再次工作!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.