Rumah > Soal Jawab > teks badan
Saya mahu menggunakan fungsi omnicompletion atau omniccompletion dalam vim untuk merealisasikan penyiapan automatik fungsi glibc Contohnya, masukkan pri dalam fail sumber C, dan kemudian tekan C-x C-o untuk muncul senarai untuk melengkapkan printf, dan seterusnya.
Masalahnya sekarang ialah saya menggunakan ctags untuk memproses fail pengepala C standard yang dipasang oleh glibc-headers-2.15-57.fc17.i686 dan menjana fail tags_glibc. Tetapi masukkan pri dalam fail sumber C, dan kemudian C-x C-o Dalam menu pop timbul, terdapat hanya definisi dan prototaip perisytiharan printf dalam stdio2.h, tetapi bukan perisytiharan printf stdio.h. Apa yang pelik ialah saya menggunakan vim untuk melihat fail tag yang dijana, mencari printf, dan menemui tiga entri berikut:
printf /usr/include/bits/stdio2.h /^printf (__const char *__restrict __fmt, ...)$/;" f printf /usr/include/bits/stdio2.h 108;" d printf /usr/include/stdio.h /^extern int printf (__const char *__restrict __format, ...);$/;" p
Yang terakhir menunjukkan bahawa ctags menjana perisytiharan prototaip (jenis p) printf dalam stdio.h, tetapi mengapa saya tidak dapat melihat yang ketiga apabila saya memasuki pri<C-x C-o> Di mana salah saya? ?
Fenomena yang sama juga berlaku dalam fungsi seperti fprintf (simbol ini tersedia dalam stdio.h dan stdio2.h), memcpy (tersedia dalam string.h dan string3.h).
Sistem saya ialah fedora17 (3.6.3-1.fc17.i686), ctags ialah versi terkini, 5.8
Perintah ctags yang digunakan adalah seperti berikut:
ctags --langmap=c:.c.h --language-force=c -h .h --c-kinds=+pxl --exclude='tags*' --exclude='*swp' --exclude='*~' --exclude='*[!ch]' -I _THROW -I __attribute__+ -I __wur -f tags_glibc -L glibc-headers-filelist.txt
Antaranya, penjanaan glibc-headers-filelist.txt ialah arahan berikut:
rpm -ql glibc-headers |grep '\.h' >glibc-headers-filelist.txt
Pakar vim yang dihormati, adakah terdapat cara untuk menjana fail tag bagi fail pengepala glibc dengan lebih baik?
滿天的星座2017-05-16 16:44:46
-e
Sertakan tag luaran. ctags biasanya akan mengabaikan pengisytiharan extern fungsi atau pembolehubah; itu berguna apabila menjana teg untuk program anda sendiri. Fail tag untuk pengisytiharan luaran dalam fail pengepala standard sistem boleh menjadi sumber yang sangat berguna, jadi bendera -e ini telah dibuat.
Dari http://elvis.the-little-red-haired-gi...
为情所困2017-05-16 16:44:46
Apabila menggunakan fail tag, anda perlu membuka vim dalam direktori tempat tag berada.
Apabila menggunakan direktori yang berbeza, anda perlu menetapkan pembolehubah teg dalam vim dan nilai pembolehubah ialah laluan fail teg. Contohnya:
:set tags=....../tags_glibc