esempio minimo di cscope
Ingo ne ha parlato, ecco un esempio.
Per prima cosa dovresti impostare il tuo .vimrc
:
set cscopequickfix=s-,c-,d-,i-,t-,e-
Quindi vai alla directory di base del tuo progetto ed esegui:
cscope -Rb
Questo genera un cscope.out
file che contiene le informazioni analizzate. La generazione è ragionevolmente veloce, anche per progetti enormi come il kernel Linux.
Apri vim ed esegui:
:cs add cscope.out
:cs find c my_func
c
è un mnemonico per callers
. L'altro cscope
a condizione che siano possibili anche query, gli mnemonici sono elencati sotto:
help cscope
Questo aggiunge un elenco dei chiamanti all'elenco Quickfix, che puoi aprire con:
:copen
Vai alla linea che ti interessa e premi invio per saltare lì.
Per trovare i chiamanti del nome della funzione attualmente sotto il cursore, aggiungi al tuo .vimrc
:
function! Csc()
cscope find c <cword>
copen
endfunction
command! Csc call Csc()
e inserisci :Csc<enter>
quando il cursore è sopra la funzione.
DA FARE:
- fallo per la funzione corrente sotto il cursore con un singolo comando. Correlati:mostra il nome della funzione nella riga di stato
- aggiungi automaticamente il database più vicino (directory padre) quando inserisci un file:come caricare automaticamente cscope.out in vim
- apri in modo interattivo il grafico delle chiamate come Eclipse. Correlati:Genera albero delle chiamate dal database cscope
Un consiglio:adoro vim, ma è troppo complicato per me impostare questo genere di cose. E non tiene conto delle classi, ad es. in C++. Se un progetto conta abbastanza per te, prova a far funzionare il progetto su qualche "IDE". Potrebbe comportare un sovraccarico se il progetto non tiene traccia dei file di configurazione IDE (che sono BLOB a modifica automatica che inquinano il repository ...), ma per me ne vale la pena. Per C / C++, il mio preferito finora era KDevelop 4.
Per questo, Vim si integra con cscope attrezzo; vedi :help cscope
per ulteriori informazioni.