2012-11-15 47 views
7

在Vim中,我經常發現自己在這裏我想完成我正在編輯在一個單獨的緩衝區中的文件的文件名的情況。的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有一個CWD等同於bar.h的父目錄。這並不總是可能的。

鑑於我有bar.h在一個單獨的緩衝區中打開,是否有可能基於緩衝區名稱自動完成?

回答

6

好主意;限制候選人加載緩衝區減少候選人名單,並且還允許在文件路徑中的任何地方匹配。

爲了達到此目的,必須實施自定義插入模式完成。通過將bufname()遍歷從1bufnr('$')的所有緩衝區號,可以檢索文件名。我剛剛實施了這個作爲BufNameComplete plugin。我希望這適合你的需求(和我的)。

+0

這很好用!我已經安裝了插件,現在正在使用它。謝謝一堆! – rustushki