2012-09-26 55 views
1

當我只打開相同文件類型的文件時,我發現Vim的關鍵字完成非常有用。但是,只要我開始編輯多個文件類型,它變得不太有用。如果我正在編輯一個Python項目,然後在另一個選項卡中打開我的vimrc,那麼Python文件中的關鍵字完成現在將包含來自我的vimrc的關鍵字。在不禁用完整查看其他緩衝區的選項的情況下,是否可以讓關鍵字完成僅與相同文件類型的緩衝區一起工作?Vim的關鍵字完成是否僅限於相同的文件類型?

回答

1

好主意。我是Vim插入模式完成的忠實粉絲,並且編寫了一個庫,可以輕鬆實現自定義完成:CompleteHelper

隨着一點點的增強,該庫(我已經在1.30版本只是實現),它允許在完成考生限制在一定的緩衝區。有了這個,我已經實施了你的建議SameFiletypeComplete plugin。試試看;我希望它對你有用。

1

您正在使用<C-n>/<C-p>,對不對?

set complete值確定完成源。默認值包括完成列表中其他緩衝區和窗口的內容。

有關選項的列表,請參閱:help 'complete'。這可能會解決你的問題:

:set complete=.,t,i 

另外,還可以使用其它快捷鍵完成像<C-x><C-n><C-x><C-p><C-x><C-o>,這取決於你想完成什麼。請參閱:help ins-completion

+0

刪除W,B,U從完全是做什麼我問對面。我使用supertab,默認使用c-p,這是正常的關鍵字完成。所以我想我想要的是一個用戶完成功能,它與關鍵字完成功能完全相同,但將其限制在相同文件類型的緩衝區中。 – user1564022

+0

對不起,我錯過了你的部分問題。但是你忘記提到你正在使用第三方插件,它在等式中引入了許多變量,並減少了正確回答的機會。是不是可以設置Supertab,以便它可以做到你想要的?那麼''? – romainl

+0

只搜索當前文件中的關鍵字。我希望它能夠執行所做的操作 - 也可以在其他打開的文件中查找關鍵字 - 但僅限於**如果其他文件具有相同的文件類型。看起來這樣做的唯一方法是在vimscript中重新實現邏輯作爲completefunc,並在文件類型上添加一個附加條件。 – user1564022

相關問題