Vim插入模式文件路径完成

我想改变vim在哪里查找文件完成,但只能在插入模式下进行。 例如:

我在CG-Website目录中打开gvim。

这是我的目录结构:

然后我进入css文件夹并打开style.css

使用:e src/static/css/style.css

现在我在style.css里面,我想完成一个目录下的文件名。

我希望能够在INSERT模式下输入../ ,并让静态文件夹内的所有文件/文件夹显示出来,而不是现在所做的www文件夹。

但是我不想更改实际的目录,因为我仍然希望:e正常工作。


插入模式文件名完成总是从“当前目录”或“工作目录”完成,该目录可能是也可能不是当前文件的目录。 由于您不想更改目录,文件名完成无法像您希望的那样工作。

实际上,最后一句:h compl-filename应该给你一个提示:

Search for the first file name that starts with the
same characters as before the cursor.  The matching
file name is inserted in front of the cursor.
Alphabetic characters and characters in 'isfname'
are used to decide which characters are included in
the file name.  Note: the 'path' option is not used
here (yet).

解决此问题的一个办法是set autochdir以便Vim始终将工作目录更改为当前文件的目录,并使用CtrlP(还有其他插件)等插件进行导航。 正确配置后,CtrlP可让您根据存在的.git或类似目录的定义从项目的家中导航文件。 这非常方便。

但是,通过set autochdir ,您可以相对轻松地避开该限制(再次,您需要它来完成文件名的工作,就像您 - 我 - 希望它能够工作)和一点创意:

nnoremap <F9> :e ~/path/to/project/

考虑将此映射作为项目的快捷方式。


我认为你正在接近这个错误的方式。 你想过滤相对于你上一次打开的目录的结果而不改变你的当前目录,这是不合理的。

我的建议是使用一种工具,它可以让您快速筛选项目根文件夹中的所有文件。

看看Command-T:VIM的快速文件导航

PS:你需要使用ruby支持vim。

链接地址: http://www.djcxy.com/p/37637.html

上一篇: Vim insert mode file path completion

下一篇: vim path auto completion, how do I enter a directory?