Saya mencoba mengumpulkan kotak alat perintah / permintaan Vim, dalam mode perintah atau pencarian, untuk menavigasi basis kode tanpa menggunakan Ctags atau alat eksternal lainnya. Ctag sangat bagus tetapi dukungan dapat bervariasi tergantung pada lingkungan pengembangan tempat Anda terjebak. Saya hanya ingin mengandalkan pengetahuan Vim.
9
gd
. Ini membawa kursor ke deklarasi lokal dari variabel di bawah kursor.Jawaban:
"Sertakan pencarian" adalah salah satu alat tersebut:
Terkait dengan "sertakan pencarian", "pencarian definisi" juga menarik:
Kedua alat bergantung pada berbagai opsi yang mungkin atau mungkin tidak diatur oleh plugin tipe file Anda.
Lihat
:help include-search
.Anda juga dapat menggunakan
gd
dangD
sebagai versi ringan dari[D
dan]D
.Lihat
:help gd
.Dalam buffer saat ini, perintah di bawah ini akan mencantumkan setiap definisi fungsi dan nomor barisnya:
Lihat
:help :g
.:grep
dan:vimgrep
juga bermanfaat, jika hanya karena hasilnya dimasukkan ke dalam daftar perbaikan cepat yang dapat dinavigasi dengan:cn
,:cp
... dan ditampilkan di jendela perbaikan cepat yang sangat berguna.Lihat
:help :grep
,:help :vimgrep
dan:help quickfix
.Berbicara tentang daftar quickfix / jendela, saya menulis fungsi ini (berdasarkan karya orang lain) untuk menampilkan hasil
[I
,]I
,:ilist
,[D
,]D
dan:dlist
dalam daftar quickfix / jendela. YMMV tentu saja.Meskipun tidak sepenuhnya alat navigasi, saya menemukan jendela pratinjau sangat berguna untuk melihat tanda tangan dari fungsi yang saya kerjakan.
Lihat
:help preview-window
.Yang mengatakan ...
Vim tidak tahu apa-apa tentang kode Anda di luar beberapa pola regex yang mungkin cocok atau tidak cocok dengan gaya pengkodean Anda atau apa pun. Ini berarti bahwa navigasi kode lebih baik dilakukan dengan bantuan alat eksternal seperti ctag, cscope atau GNU GLOBAL.
sumber
Ada banyak cara untuk menavigasi kode (termasuk dalam Vim dan eksternal), saya masih menemukannya. Apa yang saya gunakan dalam pekerjaan sehari-hari adalah:
gf
-commandCtrl+O
,Ctrl+I
- melompat mundur atau maju dalam "riwayat" navigasig;
- lompat ke tempat yang terakhir diedit dalam file'[some_letter]
perintah, jika huruf adalah huruf kapital maka Anda akan mendapatkan tanda yang akan dapat dijangkau dari file apa saja (buffer).sumber