De autocompletion C / C + + in vim
- Installatie
- Configuratie
- Gebruik
- Links
Deze tutorial is bedoeld voor mensen met Vim op Linux. Automatisch aanvullen is een bekende functie voor Linux-gebruikers, maar het kan soms woorden suggereren die in de context niet logisch zijn. Dit kan frustrerend zijn bij het programmeren, omdat automatisch aanvullen bijvoorbeeld een type kan suggereren wanneer op dat moment in de code een methode wordt verwacht.
class plop () {protected: int plopons; public: plop () {} void plopez () {}}; int main () {plop p; p. // <- Ctrl P proposera successivement: plopez, plop ... alors que c'est forcement plopons return 0; }
Een plug-in, gebaseerd op ctags Met Vim kunt u een intelligentere Auto-completering maken die rekening kan houden met de context waarin een woord wordt gebruikt.
Installatie
We beginnen met het installeren van ctags. Bijvoorbeeld, onder Debian of Debian gebaseerde distributies (ubuntu, xandros etc.):
sudo aptitude update sudo aptitude safe-upgrade sudo aptitude install exuberant-ctags
Het herstelt ook de Vim-plug-in voor automatisch aanvullen:
//www.vim.org/scripts/script.php?script_id=1520
We zullen alles doen wat betreft zelf-voltooiing in ~ /. Vim:
mkdir -p ~ / .vim / tags mv omnicpp * zip ~ / .vim cd ~ / .vim unzip omnicpp * zip cd -
Ctags kan het probleem van headers QT, OpenGL, SDL beschouwen. Voor de STL moet u hier de headers "simple" ophalen:
//www.vim.org/scripts/script.php?script_id=2358
Het pakt het archief uit en maakt tags van de STL:
tar xjvf cpp_src.tar.bz2 ctags -R --c ++ - soorten = + p --fields = + iaS --extra = + q --taaluage-force = C ++ cpp_src && mv tags ~ / .vim / tags / stl
Nu genereert het de tags voor de geïnstalleerde bibliotheken (aan te passen als de bibliotheken elders zijn geïnstalleerd). In de bibliotheken OpenGL, SDL en QT typt u bijvoorbeeld de volgende drie opdrachten:
c
tags -R --c ++ - soorten = + p --fields = + iaS --extra = + q --taaluage-force = C ++ / usr / include / GL / && mv tags ~ / .vim / tags / gl ctags - R --c ++ - soorten = + p --fields = + iaS --extra = + q --taaluage-force = C ++ / usr / include / SDL / && mv-tags ~ / .vim / tags / sdl ctags -R - -c ++ - soorten = + p --fields = + iaS --extra = + q - taaluage-force = C ++ / usr / include / qt4 / && mv tags ~ / .vim / tags / qt4
Configuratie
Nu moeten we vim vertellen om de plugin-bestanden en de verschillende tags te laden. Om dit te doen, voegt u gewoon toe aan het einde van het bestand ~ /. Vimrc de volgende regels:
"prérequis tags instellen nocp bestandstype plugin op" tags configureren - voeg hier extra tags toe of becommentarieer niet-gebruikte tags set-tags + = ~ / .vim / tags / stl set tags + = ~ / .vim / tags / gl set tags + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4 "bouw tags van je eigen project met CTRL + F12" map:! ctags -R --c ++ - soorten = + p --fields = + iaS - -extra = + q. noremap:! ctags -R --c ++ - species = + p --fields = + iaS --extra = + q. inoremap:! ctags -R --c ++ - soorten = + p --fields = + iaS --extra = + q. "OmniCppComplete laat OmniCpp_NamespaceSearch = 1 laten OmniCpp_GlobalScopeSearch = 1 laten OmniCpp_ShowAccess = 1 laten OmniCpp_MayCompleteDot = 1 laten OmniCpp_MayCompleteArrow = 1 laten OmniCpp_MayCompleteScope = 1 laten OmniCpp_DefaultNamespaces = [" std ", " _GLIBCXX_STD "]" openen en sluiten automatisch het pop-upmenu / voorbeeldvenster au CursorMovedI, InsertLeave * if pumvisible () == 0 | silent! pclose | endif set completeopt = menuone, menu, langste, preview
Als er voor sommige bestanden alleen tags werden gegenereerd, reageer dan op de andere door toe te voegen aan het begin van de regel. Bijvoorbeeld als we ~ /.vim/tags/gl en ~ / .vim / tags / sdl niet hebben gegenereerd:
set tags + = ~ / .vim / tags / stl "set tags + = ~ / .vim / tags / gl" set tags + = ~ / .vim / tags / sdl set tags + = ~ / .vim / tags / qt4
We moeten alleen het bestand opslaan en (opnieuw) starten met vim, zodat ze de wijzigingen weergeven in ~ /. Vimrc.
Gebruik
Alles dat eerder is getagd (dwz in deze tutorial-tags STL, QT, SDL en OpenGL) is al beschikbaar in de automatische aanvulling. Druk eenvoudig op ctrl p of n. Zodra de lijst verschijnt, kunt u de pijlen gebruiken om het goede voorstel te markeren en op Enter drukken.
Het is echter nog niet helemaal klaar. Het moet de tags van symbolen (variabelen, functies, typen ...) die specifiek zijn voor het project dat wordt ontwikkeld, regenereren. Dit zal opnieuw een tagsbestand genereren. En natuurlijk, het zal het bestand verversen elke keer dat je een symbool van het project toevoegt, verwijdert of wijzigt zodat het actueel is.
Zoals gebruikelijk is, wordt aanbevolen een toets op het toetsenbord in kaart te brengen om een proces van ctags te activeren. In het voorbeeldbestand ~ / .Vimrc dat ik gaf, wordt dit gewaarborgd door op F12 te drukken.
Links
//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