8

在 Vim 中,我经常发现自己想要完成在单独缓冲区中编辑的文件的文件名。

假设我打开了两个缓冲区:foo.cpp 和 bar.h。在 foo.cpp 我需要#include "bar.h"。我想做这样的事情:

foo.cpp

#include "b<complete filename to bar.h>

根据 Vim 文档,我可以使用 CTRL+x CTRL+f 来完成文件名,但这似乎依赖于 Vim 具有与 bar.h 的父目录等效的 CWD。这并不总是可能的。

鉴于我在单独的缓冲区中打开了 bar.h,是否可以根据缓冲区名称自动完成?

4

1 回答 1

7

好主意; 将候选者限制在加载的缓冲区中会减少候选者列表,并且还允许在文件路径中的任何位置进行匹配。

为此,必须实现自定义插入模式完成。可以通过从到遍历bufname()所有缓冲区号来检索文件名。我刚刚将它实现为BufNameComplete 插件。我希望这适合您(和我的)的需求。1bufnr('$')

于 2012-11-16T13:16:00.337 回答