C / C + + autocompletion di vim

Autocompletion adalah ciri yang hebat untuk pengaturcara yang bekerja pada pelbagai jenis bahasa pengaturcaraan seperti bahasa C / C + +. Editor Vim menyediakan ciri ini di bawah Windows atau Linux . Penyempurnaan automatik C / C + + dalam carian Vim untuk kata-kata yang ditaip dari fail yang sebelum ini telah menyimpan tegnya di dalamnya. Pengguna, dengan bantuan komponen perkakasan sistem - iaitu papan kekunci, akan mengkonfigurasi kunci untuk memulakan proses mencari tag yang disimpan. Walau bagaimanapun, ia berhemat untuk membuka mata untuk apa-apa perkataan yang tidak masuk akal.

  • Pemasangan
  • Konfigurasi
  • Guna
  • Pautan

Tutorial ini bertujuan untuk orang yang menjalankan Vim di Linux. Penyelesaian auto adalah fungsi biasa kepada pengguna Linux, namun kadang-kadang dapat mencadangkan kata-kata yang tidak masuk akal dalam konteks. Ini boleh mengecewakan apabila pengaturcaraan, seperti Auto-lengkap mungkin mencadangkan, sebagai contoh, jenis apabila suatu kaedah dijangka pada titik itu dalam kod.

 plop kelas () {protected: int plopons; awam: plop () {} void plopez () {}}; int main () {plop p; p. // <- Ctrl P proposera successivement: plopez, plop ... alors que c'est foroption plopons return 0; } 

Plugin, berdasarkan ctags Vim membolehkan anda untuk membuat Auto-lengkap yang lebih pintar yang boleh mengambil kira konteks di mana perkataan digunakan.

Pemasangan

Kami mulakan dengan memasang ctags. Sebagai contoh, di bawah pengedaran Debian atau Debian (ubuntu, xandros dll):

 sudo aptitude update sudo aptitude safe-upgrade sudo aptitude install exuberant-ctags 

Ia juga pulih plugin Vim untuk penyiapan automatik:

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

Kami akan melakukan segala-galanya mengenai penyelesaian diri dalam ~ /. Vim:

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

Ctags dapat mempertimbangkan masalah tajuk QT, OpenGL, SDL. Walau bagaimanapun, untuk STL, anda mesti mengambil tajuk "mudah" di sini:

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

Ia membatalkan arkib dan mencipta tag dari STL:

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ cpp_src && mv tags ~ / .vim / tags / stl 

Kini ia menghasilkan tag untuk perpustakaan yang dipasang (untuk disesuaikan jika perpustakaan dipasang di tempat lain). Sebagai contoh, dalam perpustakaan OpenGL, SDL dan QT, cukup ketik tiga perintah berikut:

c

 tags -R --c ++ - jenis = + p --field = + iaS --extra = + q --language-force = C ++ / usr / include / GL / && mv tags ~ / .vim / tags / gl ctags - R --c ++ - jenis = + p --field = + iaS --extra = + q --language force = C ++ / usr / include / SDL / && mv tags ~ / .vim / tags / sdl ctags -R - -c ++ - jenis = + p - medan = + iaS --extra = + q --language-force = C ++ / usr / include / qt4 / && mv tags ~ / .vim / tags / qt4 

Konfigurasi

Sekarang kita mesti memberitahu vim untuk memuatkan fail plugin dan tag yang berbeza. Untuk melakukan ini, tambahkan pada akhir fail ~ /. Vimrc baris berikut:

 "prasyarat tag tetapkan nocp filetype plugin pada" configure tags - tambahkan tag tambahan di sini atau komenkan yang tidak digunakan yang menetapkan tag + = ~ / .vim / tags / stl menetapkan tag + = ~ / .vim / tag / gl menetapkan tag + = ~ .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 "membina tag projek anda sendiri dengan peta CTRL + F12:! ctags -R --c ++ - -extra = + q. noremap:! ctags -R --c ++ - jenis = + p --field = + iaS --extra = + q. inoremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. OmniCppComplete biarkan OmniCpp_NamespaceSearch = 1 biarkan OmniCpp_GlobalScopeSearch = 1 biarkan OmniCpp_ShowAccess = 1 biarkan OmniCpp_MayCompleteDot = 1 biarkan OmniCpp_MayCompleteArrow = 1 biarkan OmniCpp_MayCompleteScope = 1 biarkan OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] "secara automatik membuka dan menutup menu popup / CursorMovedI, InsertLeave * if pumvisible () == 0 | silent! pclose | endif set completeopt = menuone, menu, terpanjang, pratonton 

Jika tag hanya dihasilkan untuk beberapa fail, komen pada yang lain dengan menambah pada awal baris. Contohnya jika kita tidak menjana ~ /.vim/tags/gl dan ~ / .vim / tags / sdl:

 tetapkan tag + = ~ / .vim / tags / stl "tetapkan tag + = ~ / .vim / tags / gl" tetapkan tag + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 

Kami hanya perlu menyimpan fail dan (semula) mula vim supaya mereka mencerminkan perubahan kepada ~ /. Vimrc.

Guna

Semua yang telah ditandakan sebelumnya (iaitu dalam tag tutorial ini STL, QT, SDL, dan OpenGL) sudah tersedia dalam penyelesaian automatik. Cukup tekan ctrl p atau n. Setelah muncul senarai, anda boleh menggunakan anak panah untuk menyerlahkan cadangan yang baik dan tekan enter.

Bagaimanapun, ia tidak selesai sepenuhnya. Ia harus menjana semula tanda-tanda simbol (pembolehubah, fungsi, jenis ...) khusus kepada projek yang sedang dibangunkan. Ini sekali lagi akan menghasilkan fail tag. Dan tentu saja, ia akan menyegarkan semula fail setiap kali anda menambah, memadam atau menukar simbol projek supaya ia menjadi terkini.

Seperti biasa, disarankan agar anda memetakan kunci pada papan kekunci untuk mencetuskan proses ctags. Dalam fail contoh ~ / .Vimrc yang saya berikan, ini dipastikan dengan menekan F12.

Pautan

//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

Artikel Sebelumnya Artikel Seterusnya

Tip-Tip Utama