Die Autovervollständigung C / C ++ in vim

Die automatische Vervollständigung ist eine großartige Funktion für Programmierer, die mit verschiedenen Programmiersprachen wie C / C ++ arbeiten. Vim Editor bietet diese Funktion unter Windows oder Linux . Die automatische Vervollständigung von C / C ++ in Vim sucht nach Wörtern, die aus einer Datei eingegeben wurden, in der zuvor die Tags gespeichert waren . Der Benutzer konfiguriert mit Hilfe der Hardwarekomponente des Systems - dh der Tastatur - eine Taste, um den Vorgang des Durchsuchens der gespeicherten Tags zu beschleunigen. Es ist jedoch ratsam, nach Wörtern Ausschau zu halten, die keinen Sinn ergeben.

  • Installation
  • Aufbau
  • Benutzen
  • Links

Dieses Tutorial richtet sich an Benutzer, die Vim unter Linux ausführen. Die automatische Vervollständigung ist für Linux-Benutzer eine vertraute Funktion, kann jedoch manchmal Wörter vorschlagen, die im Kontext keinen Sinn ergeben. Dies kann beim Programmieren frustrierend sein, da die automatische Vervollständigung beispielsweise einen Typ vorschlagen kann, bei dem an dieser Stelle im Code eine Methode erwartet wird.

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

Ein Plugin, das auf ctags Vim basiert, ermöglicht es Ihnen, eine intelligentere automatische Vervollständigung zu erstellen, die den Kontext berücksichtigt, in dem ein Wort verwendet wird.

Installation

Wir beginnen mit der Installation von ctags. Zum Beispiel unter Debian oder Debian-basierten Distributionen (Ubuntu, Xandros usw.):

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

Außerdem wird das Vim-Plugin für die automatische Vervollständigung wiederhergestellt:

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

Wir werden alles in Bezug auf die Selbstvervollständigung in ~ / tun. Vim:

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

Ctags ist in der Lage, das Problem der Header QT, OpenGL, SDL zu berücksichtigen. Für die AWL müssen Sie jedoch die Überschriften "einfach" hier abrufen:

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

Es entpackt das Archiv und erzeugt Tags aus der AWL:

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

Jetzt werden die Tags für die installierten Bibliotheken generiert (die angepasst werden müssen, wenn die Bibliotheken an einem anderen Ort installiert sind). Geben Sie beispielsweise in den Bibliotheken OpenGL, SDL und QT einfach die folgenden drei Befehle ein:

c

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

Aufbau

Jetzt müssen wir vim anweisen, die Plugin-Dateien und die verschiedenen Tags zu laden. Fügen Sie dazu einfach am Ende der Datei ~ / hinzu. Vimrc die folgenden Zeilen:

 "prérequis tags set nocp filetype plugin on" tags konfigurieren - füge hier zusätzliche Tags hinzu oder kommentiere nicht verwendete aus set tags + = ~ / .vim / tags / stl set tags + = ~ / .vim / tags / gl set tags + = ~ / .vim / tags / sdl setze Tags + = ~ / .vim / tags / qt4 "baue Tags deines eigenen Projekts mit STRG + F12" map:! ctags -R --c ++ - species = + p --fields = + iaS - -extra = + q. noremap:! ctags -R --c ++ - species = + p --fields = + iaS --extra = + q. inoremap:! ctags -R --c ++ - species = + p --fields = + iaS --extra = + q. "OmniCppComplete lassen OmniCpp_NamespaceSearch = 1 lassen OmniCpp_GlobalScopeSearch = 1 lassen OmniCpp_ShowAccess = 1 lassen OmniCpp_MayCompleteArrow = 1 lassen OmniCpp_MayCompleteScope = 1 lassen OmniCpp_MayCompleteScope = 1 lassen" CursorMovedI, InsertLeave * falls pumvisible () == 0 | silent! pclose | endif set completeopt = menuone, menu, longest, preview 

Wenn Tags nur für einige Dateien generiert wurden, kommentieren Sie die anderen, indem Sie sie am Zeilenanfang einfügen. Wenn wir zum Beispiel nicht ~ /.vim/tags/gl und ~ / .vim / tags / sdl generiert haben:

 Tags setzen + = ~ / .vim / tags / stl "Tags setzen + = ~ / .vim / tags / gl" Tags setzen + = ~ / .vim / tags / sdl Tags setzen + = ~ / .vim / tags / qt4 

Wir müssen nur die Datei speichern und vim (neu) starten, damit sie die Änderungen an ~ / widerspiegeln. Vimrc.

Benutzen

Alles, was zuvor markiert wurde (dh in diesem Tutorial die Tags STL, QT, SDL und OpenGL), ist bereits in der automatischen Vervollständigung verfügbar. Drücken Sie einfach Strg p oder n. Sobald die Liste angezeigt wird, können Sie den guten Vorschlag mit den Pfeilen markieren und die Eingabetaste drücken.

Es ist jedoch noch nicht vollständig fertig. Die Tags der Symbole (Variablen, Funktionen, Typen ...), die für das zu entwickelnde Projekt spezifisch sind, sollten neu generiert werden. Dadurch wird erneut eine Tags-Datei generiert. Und natürlich wird die Datei jedes Mal aktualisiert, wenn Sie ein Symbol des Projekts hinzufügen, löschen oder ändern, damit es aktuell ist.

Es ist durchaus üblich, dass Sie eine Taste auf der Tastatur zuordnen, um einen Prozess von ctags auszulösen. In der von mir angegebenen Beispieldatei ~ / .Vimrc wird dies durch Drücken von F12 sichergestellt.

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

Vorherige Artikel Nächster Artikel

Top-Tipps