2012-11-15 13 views
7

In Vim, mi trovo spesso in una situazione in cui voglio completare un nome file di un file che sto modificando in un buffer separato.Vim Completion Based in Buffer Name

Supponiamo di avere due buffer aperti: foo.cpp e bar.h. In foo.cpp ho bisogno di # include "bar.h". Voglio fare qualcosa di simile:

foo.cpp

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

Secondo la documentazione di Vim, io sono in grado di utilizzare CTRL + x CTRL + F per fare il completamento nome del file, ma che sembra fare affidamento su Vim avere un CWD equivalente alla directory padre di bar.h. Non è sempre possibile.

Dato che ho bar.h aperto in un buffer separato, è possibile eseguire il completamento automatico in base al nome del buffer?

risposta

6

Buona idea; limitare i candidati ai buffer caricati abbassa la lista dei candidati e consente anche una corrispondenza in qualsiasi punto del percorso del file.

Per ottenere ciò, è necessario implementare un completamento di modalità di inserimento personalizzato. I nomi dei file possono essere recuperati iterando bufname() su tutti i numeri di buffer da 1 a bufnr('$'). L'ho appena implementato come BufNameComplete plugin. Spero che si adatti alle tue esigenze (e alla mia).

+0

Questo funziona benissimo! Ho installato il plugin e sto usando ora. Grazie mille! – rustushki