Perché è vim -t ctags non basta? Non posso saltare alla funzione che voglio
-
27-10-2019 - |
Domanda
ctags -R dirname, vim -t tag è molto potente, dal momento che dopo questi due comandi, ora è possibile avere la possibilità di navigare tra il codice di quel progetto, per esempio si può saltare solo al codice di certa funzione utilizzando: tag functionName, ma questa operazione hanno ancora alcuni problemi, come è solito caso che un codice sorgente potrebbe includere alcune chiamate di funzione come va_start (), mentre questo codice non è incluso nella directory dirname, quindi indexs non vengono generati per questa funzione, e non si può navigare alla definizione di va_start (), ma è necessario per passare a questa funzione? come trovare il codice? Io non so nemmeno dove va_start () è definito esattamente. Come faccio a generare indice ctags per le funzioni di sistema o la funzione di terze parti?
Soluzione
Quando si utilizza "ctags -R dirname" siete l'indicizzazione solo simboli per il contenuto della directory dirname.
Cosa accade è che "va_args" è definito nella stdarg.h che è un'intestazione di libreria standard C.
che si incontrano lo stesso problema ogni volta che verrà usato un simbolo da una libreria esterna.
Quindi, se si vuole avere a disposizione tutti i simboli, che hai, in aggiunta al vostro programma, per anche indicizzare il codice per librerie esterne.
Vuol dire:
-
Il codice sorgente deve essere disponibile (che non è sempre il caso)
-
Una volta che avete trovato sul vostro sistema in cui il file è, dovrebbe essere analizzata per essere inclusi nel file "tag".
Quindi, una volta che avete eseguito ctags -R projectPath
è possibile eseguire ctags -Ra /usr/include
di aggiungere tutti i contenuti di / usr / include al file di tag.
Più in generale si vuole fare qualcosa di simile ctags -Ra librarySourcePath
per ottenere tutti i simboli utilizzati nel programma disponibile.
Modifica:
Fate attenzione però:! / Usr / include potrebbe includere un sacco di file, in modo la dimensione del file di tag
si può aumentare notevolmente, e in conseguenza, ogni volta che si cerca un simbolo per saltare ad esso, potrebbe essere molto più lento