1

我想更改 vim 查找文件完成的位置,但仅限于插入模式。例如:

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

这是我的目录结构:

在此处输入图像描述

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

在此处输入图像描述

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

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

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

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

4

2 回答 2

4

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

其实最后一句: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/

将此映射视为您项目的快捷方式。

于 2013-03-17T07:50:08.843 回答
-1

我认为您以错误的方式处理此问题。您希望在不更改当前目录的情况下过滤相对于您上次打开的目录的结果,这不太有意义。

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

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

PS:你需要有红宝石支持的vim。

于 2013-03-17T00:40:24.883 回答