2009-12-17 82 views
64

我写了很多shell脚本,并且不断地输入文件路径。我想知道是否有人知道在插入模式下让Vim自动完成文件路径的方法,就像当你在你最喜欢的shell中你选择完成目录或文件的路径一样。在Vim插入模式下,是否有添加文件路径自动完成的方法?

额外的信用,如果你能得到CTRLd功能的外壳给Vim插入模式(即以查看哪些文件/目录是在当前路径)。

+0

有趣的问题,我很想知道答案:) – 2009-12-17 04:37:37

+0

@stephenmm Ctrl-D在你的shell中做了什么?在我的bash shell中,当我输入一些文本时它什么都不做,否则关闭终端。 – alhelal 2018-02-15 06:19:51

回答

126

file name全方位后,您可以使用:

按Ctrl - X按Ctrl - ˚F

+10

另一个vim aha时刻....谢谢。我不在插入模式下使用tab,所以将其添加到我的.vimrc中: imap stephenmm 2009-12-17 05:19:16

+1

插入模式下的另一个好用处是。这会根据您正在处理的文件中的其他字词自动填写您正在输入的单词。我在输入变量或类名时一直使用它。 – Derek 2009-12-18 15:51:10

+0

@stephenmm伟大的额外提示! – Ergwun 2012-05-08 06:09:04

17

CTRL - XCTRL - ˚F

:he compl-filename

14

要建立在@CMS和@迈克尔出色的答案

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

另外,如果你是不是已经在文件/目录,你想插入,您可以按如下走下来一个文件树结构:

  1. 可选择进入该目录的某些部分。例如,您甚至可以使用../../
  2. 按CTRL +XCTRL +˚F并从列表中选择树中的第一项。
  3. 下一步按ctrl + f同时正确的项目被突出显示,以显示目录树结构下一级的列表。

您可以继续这样做,直到找到想要在文档中插入的目录/文件。

+3

在步骤3中,您是指ctrl + x和ctrl + f?因为只是ctrl + f不适合我,所以它和ctrl + n一样。顺便说一句,它不起作用,如果一个目录中有空格:/。你知道一个解决方法吗? – Rojo 2014-12-23 00:58:09

0

我遇到过类似的问题。我找到了解决方案,如:

sudo apt-get install realpath 

而在VIM naviagte在正常模式类型与到文件:

:r !realpath /path/to/file 

当你在之后的非插入模式导航realpatch您可以使用我们的关键按钮。

VOILA! TAB再次开始工作!