Ich benutze Vim jetzt schon eine Weile als Texteditor und habe das Gefühl, dass ich den langen Weg zu allem wagen muss. Ich benutze ctags, um meine Codebasis für die Navigation zu kennzeichnen, und grep (wenn auch ineffizient), um herauszufinden, wo bestimmte Methoden verwendet werden. Ich habe jedoch das Gefühl, dass es einige sehr nützliche Tools gibt, von denen ich nicht weiß, dass sie mich produktiver machen könnten.
Was ist der beste Software-Stack, den ich für die allgemeine Programmierung verwenden kann, um Vim zu ergänzen? Wie navigieren Sie in einer Codebasis, führen make aus, übertragen Änderungen an Ihrem Versionsverwaltungssystem usw.? Haben Sie eine zweite Konsole neben Vim geöffnet?
utilities
programming
vim
Louis Salin
quelle
quelle
Antworten:
Ein großartiges Merkmal von vim ist die einfache Integration in vorhandene Shell-Befehle. Einige der nützlichsten externen Tools sind diejenigen, die in coreutils und anderen einfachen Textmanipulations-Tools enthalten sind. Zum Beispiel können wir die Anzahl der Zeilen in einer Datei erhalten mit:
oder die Anzahl der Wörter:
Jeder Befehl, der auf der Shell ausgeführt wird, funktioniert hier. Dies kann mit dem Befehl
:read
(:r
) kombiniert werden , um die Ausgabe des Befehls in die Datei zu schreiben. Beispielsweise:Platziert die Wortzeilenzahl in der Datei, die Sie bearbeiten.
Ein weiterer Vorteil besteht darin, dass der gerade bearbeitete Text durch die Ausgabe eines dieser Befehle ersetzt wird. Sie können beispielsweise die gesamte Datei mit formatieren,
par
indem Sie den folgenden Befehl ausführen:quelle
Ich finde NERDtree unverzichtbar, um durch meine Codebasis zu navigieren. Daneben lohnt es sich, etwas Zeit in das Bewegen von Puffern / Fenstern zu investieren.
quelle
Unabhängig von Ihrer Sprache möchten Sie eine Funktion namens ctags verwenden , mit der Sie die Quelldefinitionen durchsuchen können. Dies erfordert ein externes Tool zum Generieren von TAGS-Dateien, mit denen VIM die Speicherorte verschiedener Codedefinitionen in einem Projekt ermittelt.
Holen Sie sich das üppige Tool ctags , es funktioniert für viele, viele Sprachen und ist sehr einfach zu bedienen.
von VIM
:help ctags
ctags erstellt einen Index aller Bezeichner in einem Quellbaum . Sie können dann die Tag-Befehle verwenden, um in Ihrem Quellbaum zu navigieren. sehen
:help tag-commands
. Am einfachsten platzieren Sie den Cursor über einem Schlüsselwort und drücken Sie CTRL- ]. Um dorthin zurückzukehren, wo Sie von der Presse gekommen sind CTRL-TDarüber hinaus möchten Sie vielleicht einige der hier diskutierten VIM-Tipps und -Verbesserungen ansehen. Es handelt sich um eine sehr umfassende Diskussion einiger der Dinge, die zur Verbesserung der Benutzererfahrung eines Vimmers durchgeführt werden können.
quelle
Vim ist ein sehr mächtiges Werkzeug, ich bin mir sicher, dass Sie alle das bereits wissen. Mit vim werden Sie innerhalb weniger Wochen einen Produktivitätsschub erzielen. Aber du wirst niemals dein Wissen über Vim sättigen. Ich bin also immer auf der Suche nach neuen und effizienten Methoden, um Dinge in Vim zu erledigen. Es gibt einen Typen namens Derek Wyatt , der einige großartige Screencasts zur Verwendung des Vim und zu den von ihm verwendeten Plugins gemacht hat.
Ein paar der Plugins, die ich benutze
Befehl-t Das Durchsuchen von Dateien ist ein Kinderspiel und sehr intelligent .
fuzzyfinder benutze ich meistens um puffer zu browsen und das aktuelle verzeichnis zu wechseln.
NERDTree Dies ist das beste Dateibrowser-Plugin für vim.
XPTemplate Das beste Template-Plugin der Welt.
rails.vim Wenn Sie Rails- , ist dies unverzichtbar.
NerdCommenter Kommentieren in jeder Art von Code.
Und das sind nur einige der Plugins, die ich verwende. Um alle Plugins mit meinem vimrc herunterzuladen, checke meine Dotfiles aus
quelle
Es gibt ein großartiges Plugin für VIM, das die Syntaxprüfung Syntastic durchführt . Es gibt viele andere Tools, die auch für die Dateiverwaltung, das Erstellen usw. zur Verfügung stehen. Gehen Sie zu IRC #vim auf freenode.net, dort gibt es viele hilfreiche Leute.
quelle
Mein Favorit ist Cscope. Wenn Sie vim mit cscope-Unterstützung kompiliert haben, können Sie cscope-Befehle von VIM direkt verwenden. zB Suche nach enthaltenen Dateien, Funktionen, die von der XYZ-Funktion aufgerufen werden usw. Ich habe es mit einem sehr großen Quellcode-Repository versucht. Es hilft sehr.
http://cscope.sourceforge.net/cscope_vim_tutorial.html
quelle
Wenn Sie in einer der von GCC unterstützten Sprachen (C, C ++, Java, Fortran) programmieren, ist Clewn ein großartiges Plugin, das den GDB-Debugger in VIM integriert. Ich habe festgestellt, dass es eine der besten Schnittstellen zu GDB ist, die es gibt.
quelle
Normalerweise richte ich
screen
für jedes Projekt eine Sitzung ein. Vim ist in Fenster 0 und ich benutze Fenster 1 für eine Shell-Sitzung. Wenn ich in einer Sprache programmiere, die ein anständiges REPL hat, führe ich das normalerweise in Fenster 2 aus. Natürlich müssen Sie das nichtscreen
tun; Sie können dies mit verschiedenen Terminalfenstern oder mit Registerkarten in einem Multitab-Terminal tun. Ich findescreen
es stabiler als andere Alternativen: Wenn Ihre Terminal-App abstürzt, können Sie einfach ein anderes Terminal starten und die Verbindung zu Ihrer noch laufendenscreen
Sitzung wiederherstellen.screen
ist auch sehr schnell zu navigieren, sobald Sie es gelernt haben (ähnlich wie vim selbst).Meistens benutze ich die Shell-Sitzung für komplizierte Versionskontrollaktivitäten wie das Neu-Basieren oder Zusammenführen: Einfachere Dinge können über die Befehlszeile von vim (z. B.
:!git commit % -m 'Added info about
Bildschirm.'
) oder mit dem flüchtigen Addon ausgeführt werden. Ich finde Flüchtlinge:Gmove
(benenne den aktuellen Puffer sowohl in vim als auch im git-Index um) und:Gdiff
(rufe vimdiff für den aktuellen Puffer mit einem vorherigen Punkt in seinem Verlauf auf) besonders nützlich. Sie können auch eine Commit-Nachricht in einem Arbeitspuffer erstellen, Text aus verschiedenen Teilen Ihres Codes kopieren und anschließend mit Commit ausführen:%!git commit -F /dev/stdin
Ich werde die Shell-Sitzung auch für Funktions- / Integrationstests verwenden, wenn dies auf alle Aufgaben zutrifft, an denen ich arbeite, z. B. wenn ich ein Befehlszeilendienstprogramm schreibe.
Die Quickfix-Funktionalität von Vim ist nützlich für das Debuggen, obwohl anscheinend für jede Sprache, in der Sie arbeiten möchten, ein anderes Addon erforderlich ist. Sie scheinen auch verschiedene Aufruftechniken zu verwenden, wobei die Zuordnung zu Funktionstasten oder zu Tastensequenzen mit
\
oder beginnt,
. oder zu benutzerdefinierten Befehlen oder durch automatisches Aufrufen, wenn ein Puffer gespeichert wird. Bisher habe ich mich nicht wirklich darum gekümmert, dies herauszufiltern, sondern nur Unit-Test- oder Flusenergebnisse mit z:r !python -m doctest whatever.py
. Ändern Sie den Code, wechseln Sie zurück in den Arbeitspuffer,u
um den Vorgang rückgängig zu machen,:r
und drücken Sie dann (die meiste Zeit) auf den Aufwärtspfeil, um den Befehl zurückzugewinnen. Aber es kann sich lohnen, ein Addon dafür zu suchen, abhängig davon, in welcher Sprache Sie arbeiten.Für gängige kompilierte Sprachen wie C, Java usw.
:make
wird ein Build erstellt, und die Unterstützung für die Quickfix-Liste ist gut etabliert. So können Sie dann:copen
den Quickfix-Puffer anzeigen. Es wird eine Fehlerliste angezeigt, eine pro Zeile. Wenn Sie Enterauf eine Linie treffen, springt Ihr anderes Fenster an den Punkt in dieser Datei.Wenn Sie mit mehreren Projekten gleichzeitig arbeiten, können Sie
:lmake
dafür sorgen, dass eine Liste mit Fehlern in der Standortliste gespeichert wird : Dies entspricht der Quickfix-Liste, ist jedoch einem einzelnen Fenster zugeordnet, anstatt ein Singleton in Ihrem zu sein vim instance.:lopen
öffnet eine Standortliste für das aktuelle Fenster.quelle