L'autocompletamento C / C + + in vim

Il completamento automatico è una grande funzionalità per i programmatori che lavorano su vari tipi di linguaggi di programmazione come le lingue C / C + +. L'editor Vim fornisce questa funzionalità sotto Windows o Linux . Il completamento automatico di C / C + + in Vim cerca le parole che sono state digitate da un file in cui sono stati precedentemente salvati i suoi tag . L'utente, con l'aiuto del componente hardware del sistema, ovvero la tastiera, configurerà un tasto per avviare il processo di ricerca dei tag memorizzati. Tuttavia, sarebbe prudente tenere d'occhio le parole che non hanno senso.

  • Installazione
  • Configurazione
  • Uso
  • link

Questo tutorial è rivolto alle persone che eseguono Vim su Linux. Il completamento automatico è una funzione familiare per gli utenti Linux, tuttavia a volte può suggerire parole che non hanno senso nel contesto. Questo può essere frustrante durante la programmazione, poiché il completamento automatico può suggerire, ad esempio, un tipo quando è previsto un metodo in quel punto nel codice.

 class plop () {protected: int plopons; public: plop () {} void plopez () {}}; int main () {plop p; p. // <- Ctrl P proposera successivement: plopez, plop ... alors que c'est forcément plopons return 0; } 

Un plug-in basato su ctags Vim consente di creare un completamento automatico più intelligente che può tenere conto del contesto in cui viene utilizzata una parola.

Installazione

Iniziamo installando ctags. Ad esempio, sotto le distribuzioni basate su Debian o Debian (ubuntu, xandros ecc.):

 sudo aptitude update sudo aptitude safe-upgrade sudo aptitude installa exuberant-ctags 

Recupera anche il plugin Vim per il completamento automatico:

//www.vim.org/scripts/script.php?script_id=1520

Faremo tutto ciò che riguarda il completamento di sé in ~ /. Vim:

 mkdir -p ~ / .vim / tags mv omnicpp * zip ~ / .vim cd ~ / .vim unzip omnicpp * zip cd - 

Ctags è in grado di considerare il problema delle intestazioni QT, OpenGL, SDL. Tuttavia, per la STL, è necessario recuperare le intestazioni "semplici" qui:

//www.vim.org/scripts/script.php?script_id=2358

Spacchetta l'archivio e crea tag dallo STL:

 tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ cpp_src && tag mv ~ / .vim / tags / stl 

Ora genera i tag per le librerie installate (da adattare se le librerie sono installate altrove). Ad esempio, nelle librerie OpenGL, SDL e QT, è sufficiente digitare i seguenti tre comandi:

c

 tags -R --c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ / usr / include / GL / && tag mv ~ / .vim / tags / gl ctags - R - c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ / usr / include / SDL / && tag mv ~ / .vim / tags / sdl ctags -R - -c ++ - types = + p --fields = + iaS --extra = + q --language-force = C ++ / usr / include / qt4 / && tag mv ~ / .vim / tags / qt4 

Configurazione

Ora dobbiamo dire a vim di caricare i file plugin e i diversi tag. Per fare ciò, aggiungi semplicemente alla fine del file ~ /. Vimrc le seguenti linee:

 "i tag prérequis impostano il plug-in nocet filetype su" configura tag - aggiungi tag aggiuntivi qui o commenta tag non utilizzati set + tag + = ~ / .vim / tags / stl set + = ~ / .vim / tags / gl set tag + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 "crea tag del tuo progetto con CTRL + F12" map:! ctags -R --c ++ - types = + p --fields = + iaS - -extra = + q. noremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. inoremap:! ctags -R --c ++ - types = + p --fields = + iaS --extra = + q. "OmniCppComplete let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_MayCompleteDot = 1 let OmniCpp_MayCompleteArrow = 1 let OmniCpp_MayCompleteScope = 1 let OmniCpp_DefaultNamespaces = [" std ", " _GLIBCXX_STD "]" apri e chiudi automaticamente il menu popup / anteprima finestra au CursorMovedI, InsertLeave * if pumvisible () == 0 | silent! pclose | endif set completeopt = menuone, menu, longest, preview 

Se i tag sono stati generati solo per alcuni file, commentare l'altro aggiungendo all'inizio della riga. Ad esempio se non abbiamo generato ~ /.vim/tags/gl e ~ / .vim / tags / sdl:

 imposta tag + = ~ / .vim / tags / stl "imposta tag + = ~ / .vim / tags / gl" imposta tag + = ~ / .vim / tags / sdl imposta tag + = ~ / .vim / tags / qt4 

Dobbiamo solo salvare il file e (ri) avviare vim in modo che riflettano le modifiche a ~ /. Vimrc.

Uso

Tutto ciò che è stato precedentemente taggato (cioè in questo tutorial tag STL, QT, SDL e OpenGL) è già disponibile nel completamento automatico. Basta premere ctrl p o n. Una volta visualizzata la lista, puoi usare le frecce per evidenziare la buona proposta e premere invio.

Tuttavia, non è completamente finito. Dovrebbe rigenerare i tag dei simboli (variabili, funzioni, tipi ...) specifici del progetto che si sta sviluppando. Ciò genererà nuovamente un file di tag. E, naturalmente, aggiornerà il file ogni volta che aggiungi, cancelli o cambi un simbolo del progetto in modo che sia attuale.

Come è abbastanza comune, si consiglia di mappare un tasto sulla tastiera per attivare un processo di ctags. Nel file di esempio ~ / .Vimrc che ho dato, questo è assicurato premendo F12.

link

//vim.wikia.com/wiki/C++_code_completion

//www.vim.org/scripts/script.php?script_id=1520

//www.vim.org/scripts/script.php?script_id=2358

Articolo Precedente Articolo Successivo

I Migliori Consigli