L'autocompletamento C / C + + in vim
- 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