GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana menemukan penelepon dan penerima fungsi dalam kode C di vi/vim?

contoh minimal cscope

Ingo menyebutkannya, ini contohnya.

Pertama, Anda harus mengatur .vimrc Anda :

set cscopequickfix=s-,c-,d-,i-,t-,e-

Kemudian ke direktori dasar proyek Anda dan jalankan:

cscope -Rb

Ini menghasilkan cscope.out file yang berisi informasi parse. Pembuatannya cukup cepat, bahkan untuk proyek besar seperti kernel Linux.

Buka vim dan jalankan:

:cs add cscope.out
:cs find c my_func

c adalah mnemonik untuk callers . cscope lainnya asalkan kueri juga memungkinkan, mnemonik tercantum di bawah:

help cscope

Ini menambahkan daftar penelepon ke daftar perbaikan cepat, yang dapat Anda buka dengan:

:copen

Pergi ke baris yang Anda minati dan tekan enter untuk melompat ke sana.

Untuk menemukan pemanggil nama fungsi yang saat ini berada di bawah kursor, tambahkan ke .vimrc Anda :

function! Csc()
  cscope find c <cword>
  copen
endfunction
command! Csc call Csc()

dan masukkan :Csc<enter> saat kursor berada di atas fungsi.

HARUS:

  • lakukan untuk fungsi saat ini di bawah kursor dengan satu perintah. Terkait:Tampilkan nama fungsi di baris status
  • secara otomatis menambahkan database terdekat (direktori induk) saat Anda memasukkan file:cara memuat cscope.out secara otomatis di vim
  • buka grafik panggilan secara interaktif seperti Eclipse. Terkait:Hasilkan Pohon Panggilan dari basis data cscope

Sebuah nasihat:Saya suka vim, tetapi terlalu rumit bagi saya untuk mengatur hal semacam ini. Dan itu tidak memperhitungkan kelas akun, mis. dalam C++. Jika sebuah proyek cukup penting bagi Anda, cobalah agar proyek tersebut bekerja pada beberapa "IDE". Ini mungkin melibatkan beberapa overhead jika proyek tidak melacak file konfigurasi IDE (yang merupakan gumpalan yang berubah secara otomatis yang mencemari repo ...), tetapi itu sangat berharga bagi saya. Untuk C / C++, favorit saya sejauh ini adalah KDevelop 4.


Untuk itu, Vim berintegrasi dengan cscope alat; lihat :help cscope untuk informasi lebih lanjut.


Linux
  1. Bagaimana Menemukan Jenis File Img Dan Memasangnya?

  2. Cara Memanggil Fungsi C di C++, Fungsi C++ di C (Campuran C dan C++)

  3. Cara mem-pipe hasil 'find' ke mv di Linux

  1. Bagaimana cara menampilkan nomor baris di vi/vim?

  2. Cara mendapatkan semua file yang melebihi ukuran tertentu dan menghapusnya

  3. Bagaimana cara menambahkan fungsi polling ke kode modul kernel?

  1. Bagaimana cara menemukan ukuran tumpukan maksimum?

  2. Bagaimana saya bisa mengedit semua file yang dikembalikan oleh find in vi di Linux?

  3. Bagaimana Anda bisa mengganti tombol j dan k di vim?