Saya baru saja menginstal Ctags (untuk membantu pengembangan C ++) dengan Vim saya (atau lebih tepatnya gVim), dan ingin mengetahui perintah, makro, cara pintas favorit Anda, kiat-kiat yang menyertainya ...
Bagikan arsenal terbaik Anda. Pengaya Vim apa lagi yang Anda rekomendasikan untuk C ++ pada pengembangan Vim?
Sunting Apa add-on lain yang akan Anda gunakan bersama dengan Ctags?
EDIT2 Versi gVim apa yang Anda gunakan dengan tag? Apakah itu membuat perbedaan?
EDIT3 Bagaimana Anda meningkatkan pengalaman pemrograman Anda untuk proyek-proyek besar dan kecil?
vim
ctags
vim-macros
kenorb
sumber
sumber
closed as not constructive
hampir dua tahun yang lalu, itu sangat konstruktif untuk sayaJawaban:
Ctrl+ ]- pergi ke definisi
Ctrl+ T- Melompat kembali dari definisi.
Ctrl+ W Ctrl+ ]- Buka definisi dalam split horizontal
Tambahkan baris ini di vimrc
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
Ctrl+ \- Buka definisi di tab baru
Alt+ ]- Buka definisi dalam pemisahan vertikal
Setelah tag dihasilkan. Anda dapat menggunakan tombol berikut untuk menandai dan keluar dari fungsi:
Ctrl+
Left MouseClick
- Pergi ke definisiCtrl+
Right MouseClick
- Melompat kembali dari definisisumber
Ctrl-w C-]
Anda dapat melakukanC-w T
(alias Shift-t) untuk mengubah yang dipecah menjadi tab baru.g C-]
sangat bermanfaat. Ini membuka dialog cepat untuk memilih satu di antara banyak definisi.g]
juga bermanfaat. Anda dapat memposisikan kursor di atas nama tag dan tekang]
untuk mendapatkan daftar tag yang cocok.Satu baris yang selalu ada di .vimrc saya:
Ini akan mencari di direktori saat ini untuk "tag", dan bekerja pohon ke arah root sampai ditemukan. TKI, Anda bisa berada di mana saja di pohon sumber Anda alih-alih hanya root itu.
sumber
cscope
?Plugin lain yang bermanfaat untuk pengembangan C adalah cscope. Sama seperti Ctags memungkinkan Anda melompat ke definisi, Cscope melompat ke fungsi panggilan .
Jika Anda memiliki cscope di direktori ~ / bin / Anda, tambahkan yang berikut ke .vimrc Anda dan gunakan g ^] untuk masuk ke fungsi panggilan (lihat: help cscope).
Hampir lupa ... Sama seperti ctag - Anda harus membuat (dan memperbarui) database secara berkala. Saya menggunakan skrip berikut
Di mana 'select_files' adalah skrip lain yang mengekstrak daftar file C dan header dari Makefile. Dengan cara ini saya hanya mengindeks file yang benar-benar digunakan oleh proyek.
sumber
Anda dapat menambahkan direktori ke pencarian ctag Anda. Sebagai contoh, saya memiliki indeks ctags dibangun untuk Qt4, dan memilikinya di .vimrc saya:
sumber
Semua yang di atas dan ...
code_complete: parameter fungsi selesai, cuplikan kode, dan banyak lagi.
taglist.vim: Browser kode sumber (mendukung C / C ++, java, perl, python, tcl, sql, php, dll)
sumber
Saya menggunakan ALT-kiri dan ALT-kanan untuk pop / mendorong dari / ke tumpukan tag.
Jika Anda gunakan
hjkl
untuk pergerakan, Anda bisa memetakan<M-h>
dan<M-l>
sebaliknya.sumber
Beberapa definisi dengan nama yang sama
<C-w>g<C-]>
buka definisi dalam split, tetapi juga lakukan:tjump
yang menuju definisi atau, jika ada beberapa definisi, memberi Anda daftar definisi untuk dipilih.sumber
:ptag
perintah yang membuka definisi di jendela pratinjau.:h CursorHold-example
mana menampilkan tag untuk item di bawah kursor di jendela pratinjau setelah batas waktu dapat dikonfigurasi.:help
terkadang mengagumkan ... lihat:help CTRL-W_g}
dan:ptjump
Perintah yang paling saya gunakan adalah C-] yang melompat ke definisi fungsi di bawah kursor. Anda dapat menggunakannya lebih sering untuk mengikuti lebih banyak panggilan. Setelah itu, Co akan membawa Anda kembali satu tingkat, Ci masuk lebih dalam lagi.
sumber
Saya telah menemukan plug-in taglist yang harus dimiliki. Ini mencantumkan semua tag yang diketahuinya (file yang telah Anda buka) di jendela terpisah dan membuatnya sangat mudah untuk menavigasi file yang lebih besar.
Saya menggunakannya sebagian besar untuk pengembangan Python, tetapi hanya bisa lebih baik untuk C / C ++.
sumber
Saya telah mengenkapsulasi manipulasi tag dalam plugin eksperimental milik saya.
Mengenai pengembangan C ++ di vim, saya sudah menjawab di sana : Saya menggunakan suite saya sendiri, dan beberapa plugin lainnya.
sumber
Saya telah mengadaptasi plugin vim saya selama dua tahun untuk mendukung proyek c ++ yang cukup besar. Anda bisa melihatnya.
Mereka menggunakan ctag dan cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507
sumber
Saya meletakkan yang berikut ini di file .gvimrc saya, yang mencari pohon dari titik mana saja untuk file tag ketika gvim mulai:
Saya kemudian secara berkala membuat kembali file tag di bagian atas pohon sumber saya dengan skrip yang terlihat seperti:
sumber
Saya menggunakan vim di macos, dan ctag asli tidak berfungsi dengan baik, jadi saya unduh terbaru dan konfigurasikan make make install it. Saya menginstal ctgas di / usr / local / bin / ctags (untuk menyimpan yang asli)
sumber
Saya mengadaptasi fungsi pencarian SetTags () di atas (yang harus diganti dengan yang setara
set tags+=./tags;/
) agar berfungsi untuk cscope. Tampaknya bekerja!sumber
Iterasi lain pada fungsi SetCscope () di atas. Itu menetapkan pre-path cscope untuk mendapatkan kecocokan tanpa harus berada di direktori "cscope.out":
sumber