Otomatik tamamlama v / in C / C + +

Otomatik tamamlama, C / C + + dilleri gibi çeşitli programlama dilleri üzerinde çalışan programcılar için mükemmel bir özelliktir. Vim editörü bu özelliği Windows veya Linux altında sağlar. Vim'deki C / C + + 'nın otomatik tamamlaması, daha önce etiketlerini içine kaydedilen bir dosyadan yazılan sözcükleri arar. Sistemin donanım bileşeninin yardımıyla kullanıcı - yani klavye, depolanan etiketlere bakma işlemini başlatmak için bir anahtar yapılandırır . Bununla birlikte, anlam ifade etmeyen herhangi bir kelimeye göz açık tutmak akıllıca olacaktır.

  • Kurulum
  • Yapılandırma
  • kullanım
  • Bağlantılar

Bu eğitim, Linux'ta Vim çalıştıran kişilere yöneliktir. Otomatik tamamlama, Linux kullanıcılarına tanıdık bir işlevdir, ancak bazen bağlamda anlamlı olmayan kelimeler önerebilir. Programlama sırasında bu sinir bozucu olabilir, çünkü Auto-complete, örneğin, kodun bu noktasında bir yöntem beklendiğinde bir tür önerebilir.

 sınıf plop () {korumalı: int plopons; public: plop () {} geçersiz plopez () {}}; int main () {plop p; s. // <- Ctrl P önerisi arka arkaya: plopez, plop ... alors que c'est forcément plopons 0 döndürür; } 

Ctag'lere dayanan bir eklenti Vim, bir kelimenin kullanıldığı bağlamı göz önünde bulundurabilecek daha akıllı bir Otomatik Tamamlama oluşturmanıza olanak sağlar.

Kurulum

Biz ctags kurarak başlıyoruz. Örneğin, Debian veya Debian tabanlı dağıtımlar altında (ubuntu, xandros vb.):

 sudo yetenek güncelleme sudo yetenek güvenli yükseltme sudo yetenek yüklemek exuberant-ctags 

Ayrıca otomatik tamamlama için Vim eklentisini kurtarır:

//www.vim.org/scripts/script.php?script_id=1520

Kendini tamamlama ile ilgili her şeyi ~ / içinde yapacağız. Vim:

 mkdir -p ~ / .vim / etiketler mv omnicpp * zip ~ / .vim cd ~ / .vim unzip omnicpp * zip cd - 

Ctag'ler QT, OpenGL, SDL başlıklarının problemini göz önünde bulundurabilir. Ancak, STL için, burada "basit" başlıklarını almanız gerekir:

//www.vim.org/scripts/script.php?script_id=2358

Arşivi açar ve STL'den etiketler oluşturur:

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - çeşit = + p --fields = + iaS --extra = + q - dil-kuvveti = C ++ cpp_src && mv etiketleri ~ / .vim / tags / stl 

Şimdi, kurulu kütüphaneler için etiketler oluşturur (kütüphaneler başka bir yere kurulursa uyarlanırlar). Örneğin, OpenGL, SDL ve QT kütüphanelerinde aşağıdaki üç komutu yazmanız yeterlidir:

c

 etiketler -R --c ++ - çeşit = + p --fields = + iaS --extra = + q - dil kuvveti = C ++ / usr / include / GL / && mv etiketleri ~ / .vim / tags / gl ctags - R --c ++ - çeşit = + p --fields = + iaS --extra = + q - dil-kuvvet = C ++ / usr / include / SDL / && mv etiketleri ~ / .vim / tags / sdl ctags -R - -c ++ - çeşit = + p - alanlar = + iaS --extra = + q - dil kuvveti = C ++ / usr / include / qt4 / && mv etiketleri ~ / .vim / tags / qt4 

Yapılandırma

Şimdi vim'e eklenti dosyalarını ve farklı etiketleri yüklemesini söylemeliyiz. Bunu yapmak için, ~ / dosyasının sonuna ekleyin. Vimrc aşağıdaki satırları:

 "prérequis tags nocp filetype eklentisini etkinleştiriyor" etiketleri yapılandırın - buraya ek etiketler ekleyin veya kullanılmayanları ayarlayın etiketlere yorum yapın + = ~ / .vim / tags / stl set etiketleri + = ~ / .vim / tags / gl set tags + = ~ / .vim / tags / sdl ayarlama etiketleri + = ~ / .vim / tags / qt4 "CTRL + F12 ile kendi projenizin etiketlerini oluşturun" harita:! ctags -R --c ++ - kinds = + p --fields = + iaS - -extra = + q. noremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. inoremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. "OmniCppComplete, " OmniCopComplete ", " OmniCppComplete ", OmniCppComplete, OmniCpp_GlobalScopeSearch = 1 'i OmniCpp_G_Cop_Cop_Cop_Fit_Bu_Bu_BeBe \" CursorMovedI, InsertLeave * eğer pumvisible () == 0 | sessiz! pclose | endif set completeeopt = menuone, menü, en uzun, önizleme 

Etiketler yalnızca bazı dosyalar için oluşturulduysa, diğerinin üzerine satırın başına ekleyerek yorum yapın. Örneğin ~ /.vim/tags/gl ve ~ / .vim / tags / sdl oluşturmadıysak:

 etiketleri ayarla + = ~ / .vim / tags / stl "etiketleri ayarla + = ~ / .vim / tags / gl" etiketleri ayarla = = / / / / etiketleri / sdl etiketleri ayarla = + / ~ / .vim / tags / qt4 

Sadece dosyayı kaydetmemiz ve (/) vim'i başlatmamız gerekiyor. Böylece ~ /. Vimrc.

kullanım

Daha önce etiketlenmiş olan her şey (yani bu eğitim etiketinde STL, QT, SDL ve OpenGL) otomatik tamamlamada zaten mevcut. Basitçe ctrl p veya n'ye basın. Liste göründüğünde, iyi teklifi vurgulamak için okları kullanın ve enter tuşuna basın.

Ancak, tamamen bitmedi. Geliştirilmekte olan projeye özgü sembol etiketlerini (değişkenler, fonksiyonlar, türler ...) yeniden üretmelidir. Bu bir kez daha bir etiket dosyası oluşturur. Ve elbette, projenin bir sembolünü her eklediğinizde, sildiğinizde veya değiştirdiğinizde, geçerli olması için dosyayı yeniler.

Oldukça yaygın olduğu gibi, bir ctags işlemini tetiklemek için klavyede bir tuş eşlemeniz önerilir. Verdiğim ~ / .Vimrc örnek dosyasında, bu F12 tuşuna basılarak sağlanır.

Bağlantılar

//vim.wikia.com/wiki/C++_code_completion

//www.vim.org/scripts/script.php?script_id=1520

//www.vim.org/scripts/script.php?script_id=2358

Önceki Makale Sonraki Makale

En Ipuçları