Ich habe gerade Ctags (um bei der C ++ - Entwicklung zu helfen) mit meinem Vim (oder besser gVim) installiert und möchte Ihre bevorzugten Befehle, Makros, Verknüpfungen und Tipps herausfinden, die damit einhergehen ...
Teilen Sie Ihr bestes Arsenal. Welche anderen Vim-Add-Ons würden Sie für C ++ in der Vim-Entwicklung empfehlen?
BEARBEITEN Welches andere Add-On würden Sie in Verbindung mit Ctags verwenden?
EDIT2 Welche Version von gVim verwenden Sie mit Tags? Macht es einen Unterschied?
EDIT3 Wie verbessern Sie Ihre Programmiererfahrung für große und kleine Projekte?
vim
ctags
vim-macros
Kenorb
quelle
quelle
closed as not constructive
fast zwei Jahren, ist es so konstruktiv für michAntworten:
Ctrl+ ]- gehe zur Definition
Ctrl+ T- Springe von der Definition zurück.
Ctrl+ W Ctrl+ ]- Öffnen Sie die Definition in einer horizontalen Teilung
Fügen Sie diese Zeilen in vimrc hinzu
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
Ctrl+ \- Öffnen Sie die Definition in einer neuen Registerkarte.
Alt+ ]- Öffnen Sie die Definition in einer vertikalen Teilung
Nachdem die Tags generiert wurden. Sie können die folgenden Tasten verwenden, um Funktionen zu markieren und zu markieren:
Ctrl+
Left MouseClick
- Zur Definition gehenCtrl+
Right MouseClick
- Von der Definition zurückspringenquelle
Ctrl-w C-]
können Sie tunC-w T
(auch bekannt als Umschalt-t) , dass die Spaltung in ein neues Tab zu ändern.g C-]
ist sehr nützlich. Es wird ein kurzer Dialog geöffnet, in dem Sie eine zwischen mehreren Definitionen auswählen können.g]
ist auch nützlich. Sie können den Cursor über dem Tag-Namen positionieren und drückeng]
, um eine Liste der passenden Tags zu erhalten.Eine Zeile, die immer in meiner .vimrc steht:
Dies sucht im aktuellen Verzeichnis nach "Tags" und arbeitet den Baum in Richtung root auf, bis eines gefunden wird. IOW, Sie können sich an einer beliebigen Stelle in Ihrem Quellbaum befinden, anstatt nur an der Wurzel.
quelle
cscope
?Ein weiteres nützliches Plugin für die C-Entwicklung ist cscope. So wie Sie mit Ctags zu Definitionen springen können, springt Cscope zu den aufrufenden Funktionen.
Wenn Sie cscope in Ihrem ~ / bin / -Verzeichnis haben, fügen Sie Folgendes zu Ihrer .vimrc hinzu und rufen Sie mit g ^] die aufrufende Funktion auf (siehe: Hilfe cscope).
Fast vergessen ... Genau wie bei ctags müssen Sie die Datenbank generieren (und regelmäßig aktualisieren). Ich benutze das folgende Skript
Wobei 'select_files' ein weiteres Skript ist, das die Liste der C- und Header-Dateien aus dem Makefile extrahiert. Auf diese Weise indiziere ich nur die tatsächlich vom Projekt verwendeten Dateien.
quelle
Sie können Ihrer ctags-Suche Verzeichnisse hinzufügen. Zum Beispiel habe ich einen ctags-Index für Qt4 erstellt und diesen in meiner .vimrc:
quelle
Alle oben genannten und ...
code_complete: Funktionsparameter abgeschlossen, Codefragmente und vieles mehr.
taglist.vim: Quellcode-Browser (unterstützt C / C ++, Java, Perl, Python, Tcl, SQL, PHP usw.)
quelle
Ich benutze ALT-left und ALT-right, um vom / zum Tag-Stack zu gelangen.
Wenn Sie
hjkl
für die Bewegung verwenden, können Sie<M-h>
und<M-l>
stattdessen abbilden .quelle
Mehrere gleichnamige Definitionen
<C-w>g<C-]>
Öffnen Sie die Definition in einem Split, aber tun Sie:tjump
dies auch, indem Sie entweder zur Definition gehen oder, wenn mehrere Definitionen vorhanden sind, eine Liste mit Definitionen anzeigen, aus denen Sie auswählen können.quelle
:ptag
Befehl, der die Definition in einem Vorschaufenster öffnet.:h CursorHold-example
dem das Tag für das Element unter dem Cursor im Vorschaufenster nach einer konfigurierbaren Zeitüberschreitung angezeigt wird.:help
ist manchmal großartig ... sehen:help CTRL-W_g}
und:ptjump
Der Befehl, den ich am häufigsten benutze, ist C-], der zur Definition der Funktion unter dem Cursor springt. Sie können es häufiger verwenden, um mehr Anrufe zu verfolgen. Danach bringt Co dich ein Level zurück, Ci geht wieder tiefer.
quelle
Ich habe das Taglist- Plug-In als ein Muss empfunden . Es listet alle ihm bekannten Tags (Dateien, die Sie geöffnet haben) in einem separaten Fenster auf und erleichtert das Navigieren in größeren Dateien.
Ich benutze es hauptsächlich für die Python-Entwicklung, aber es kann nur für C / C ++ besser sein.
quelle
Ich habe die Manipulation von Tags in einem experimentellen Plugin zusammengefasst meiner .
In Bezug auf C ++ Entwicklung in vim habe , antworte ich schon da : Ich habe meine eigene Suite verwenden, und ein paar anderen Plugins.
quelle
Ich habe meine vim-Plugins zwei Jahre lang angepasst, um ein ausreichend großes C ++ - Projekt zu unterstützen. Sie können sie sich ansehen.
Sie verwenden ctags und cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507
quelle
Ich habe Folgendes in meine .gvimrc-Datei eingefügt, die den Baum von jedem Punkt aus nach einer Tags-Datei durchsucht, wenn gvim gestartet wird:
Anschließend regeneriere ich regelmäßig eine Tag-Datei oben in meinem Quellbaum mit einem Skript, das wie folgt aussieht:
quelle
Ich benutze vim in macos und die ursprünglichen ctags funktionieren nicht gut, also lade ich die neuesten herunter und konfiguriere make make install it. Ich installiere ctgas in / usr / local / bin / ctags (um das Original zu behalten)
quelle
Ich habe die Suchfunktion SetTags () oben angepasst (die durch die entsprechende ersetzt werden sollte
set tags+=./tags;/
), um für cscope zu arbeiten. Scheint zu funktionieren!quelle
Eine weitere Iteration der obigen Funktion SetCscope (). Dadurch wird der cscope-Vorpfad festgelegt, um Übereinstimmungen zu erhalten, ohne sich in dem Verzeichnis zu befinden, in dem sich "cscope.out" befindet:
quelle