例如,當我輸入'inclu'時,是否有一種方法可以將它完成爲'include'? 謝謝。如何在vim中自動完成c或C++關鍵字
回答
大部分vim
的(複雜)自動完成是通過^X
鍵映射完成的。 ^X^]
將基於由ctags(1)
生成的標籤自動完成。 ^X^P
將在可用於完成的文件中查找以前的關鍵字。 ^X^K
查看完成詞的可配置dictionary
。 ^X^I
查看包含的文件並彈出一個菜單,用於從這些文件中完成關鍵字。 ^X^D
從#define
完成。
也許最簡單的方法就是在文件中輸入一次#include <...>
。然後可以通過#incl^X^P
處理要包含的第二個文件,然後繼續。
如果你想稍微放更多的精力進去,創建一個~/.vim/dict
文件,要自動完成,將文件添加到dictionary
變量(:help dictionary
)的關鍵字,並使用^X^K
插入它。
也許,像Snipmate或UltiSnips之類的任何插件都會對你有所幫助。
Snipmate默認執行此操作。鍵入'inc'然後按Tab,它會轉換成
#include <stdio.h>
你可以設置一些Vim的縮寫來爲你做這個。
iab inC#include ""
iab InC#include <>
然後鍵入inc<SPACE>
Vim會自動擴展爲#include ""
。您可以添加各種縮寫以減少所需的擊鍵次數。
如果你想進一步推進,我將分享一個小小的正在進行的實驗來創建一個C++'shorthand'。雖然它確實減少了輸入代碼所需的按鍵次數,但我還沒有足夠長的時間來確定記住速記所增加的複雜性是否值得。 (可能不是!)
您需要安裝UltiSnips才能正常工作。你可以使用Vim的縮寫功能做大部分工作,但我發現它最適合用專門的片段完成器。
一旦安裝了UltiSnips,您已經可以使用一些C和C++代碼片段,包括上面提到的#include ""
示例。
我在cpp.snippets文件中添加了以下內容(加上很多很多!)。
snippet sptr "std::shared_ptr<type>"
std::shared_ptr< ${1:type} >
endsnippet
當我想一個shared_ptr I型sptr
,按段完成的關鍵。 UltiSnips完成此爲std::shared_ptr<type>
選擇type
這個詞,這樣我就可以繼續輸入模板類型而不會暫停。
這個人爲的例子顯示了更多的簡寫。這是我可以鍵入的內容:
// <C> is where I would press the UltiSnip complete/next key.
fun<C>sptr<C><C>load_widget<C>cu32<C>offset<C>, cc<C>name<C>ret<C>msptr<C>widget<C>offset<C>name<C>;
它展開:
std::shared_ptr<widget> load_widget(const std::uint32_t offset, const char* name)
{
return std::make_shared<widget>(offset, name);
}
一個粗略的統計顯示這降低了大約136擊鍵下降到100。Omnicomplete或YouCompleteMe插件,這是爲進一步降低可變並且功能名稱通常可以在輸入前兩個或三個字符後完成。
我嘗試在創建類型的簡寫時使用此模式:[c]type[r|p]
。對於可選的參考或指針,[c]
是可選的const,[r]
或[p]
。 (r
和p
,我的輸入比&
和*
更容易)。例如,std::string
具有以下簡寫:
str = std::string
strp = std::string*
strr = std::string&
cstr = const std::string
cstrp = const std::string*
cstrr = const std::string&
所以cstrr
,最常見的在我的代碼,減少了19個按鍵(有一個空格)下降到只有6
你應該安裝全插件:omni autocompletion
- 1. Vim的C++自動完成
- 2. Vim關鍵字完成
- 3. C++ Vim clang完成如何讓qt自動完成?
- 4. VIM使用時凍結法術關鍵字自動完成
- 5. Emacs CEDET語義沒有`this`關鍵字的自動完成。 (C++)
- 6. Vim關鍵字完成ctags反斜槓?
- 7. 如何在c中自動完成後關閉outlook#
- 8. Vim的Ctrl + P鍵自動完成「 - 」
- 9. 免費關鍵字自動完成api
- 10. 自動完成多個關鍵字
- 11. 在vim中自動完成C++庫函數的ctags
- 12. Vim在C中自動完成一個結構
- 13. 使用jk移動鍵在vim自動完成框中滾動
- 14. vim-rails關閉自動完成
- 15. Vim的關閉和選擇自動完成功能鍵綁定
- 16. C#文本框自動完成(Winforms)關鍵事件和定製?
- 17. 如何VIM自動完成工作
- 18. 在vim中獲取ocamlmerlin自動完成
- 19. 在vim中自動完成python代碼
- 20. List @標籤自動在vim中完成
- 21. 在c中自動完成文本框#
- 22. C#不自動完成在Visual Studio中
- 23. 在C#中的自動完成代碼#
- 24. 在asp.net c中自動完成屬性#
- 25. vim自動完成功能
- 26. Vim的自動完成
- 27. 高級vim自動完成
- 28. VIM自動完成導航
- 29. Vim - 自動完成Java
- 30. clang_complete:iOS的Vim自動完成
在vim wiki網站上有關於C++ omni-completion的[this](http://vim.wikia.com/wiki/C%2B%2B_code_completion)文章。 – dave
':help ins-completion'是最權威的參考。 – sarnold