Was sind die besten Allzweck-Programmiertools zur Ergänzung von Vim? [geschlossen]


22

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?


2
Vim selbst. Möglicherweise verwenden Sie nicht die richtigen Plugins / Skripte für den Job. Es hängt davon ab, welche Art von Programmierung Sie ausführen, welche Sprache, welche anderen Tools Sie benötigen und so weiter.
Bitek

Ich gebe keine Sprache an, um die Antworten, die ich bekomme, nicht zu beeinflussen. Ich suche nicht wirklich nach Vim-Plugins, obwohl sie nützlich sind.
Louis Salin

Ich fand diese Präsentation sehr nützlich: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe.

Ich habe dies zu einem Community-Wiki gemacht. Ich erkannte, dass es keine beste Antwort auf meine Frage gibt. Danke an alle für eure Antworten!
Louis Salin

Antworten:


8

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:

:! wc -l %

oder die Anzahl der Wörter:

:! wc -w %

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:

:r !wc -l %

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, parindem Sie den folgenden Befehl ausführen:

:% !par

5

Ich finde NERDtree unverzichtbar, um durch meine Codebasis zu navigieren. Daneben lohnt es sich, etwas Zeit in das Bewegen von Puffern / Fenstern zu investieren.


+1 für den Verweis auf dieses fantastische Plugin. ( github.com/scrooloose/nerdtree )
Noffle

4

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-T

Darü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.


Ich habe in meiner Frage erwähnt, dass ich ctags verwende, aber trotzdem danke für die Antwort! :)
Louis Salin

4

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

  1. Befehl-t Das Durchsuchen von Dateien ist ein Kinderspiel und sehr intelligent .

    Das Command-T-Plug-In bietet einen extrem schnellen und intuitiven Mechanismus zum Öffnen von Dateien mit einer minimalen Anzahl von Tastenanschlägen. Der Name lautet "Command-T", da er vom Fenster "Gehe zu Datei" inspiriert ist, das in TextMate an Command-T gebunden ist.

  2. fuzzyfinder benutze ich meistens um puffer zu browsen und das aktuelle verzeichnis zu wechseln.

    FuzzyFinder bietet bequeme Möglichkeiten, um schnell zu den gewünschten Puffern / Dateien / Befehlen / Lesezeichen / Tags zu gelangen. FuzzyFinder sucht mit dem Fuzzy- / Teilmuster, in das es ein eingegebenes Muster konvertiert hat

  3. NERDTree Dies ist das beste Dateibrowser-Plugin für vim.

    Über den NERD-Baum können Sie Ihr Dateisystem durchsuchen und Dateien und Verzeichnisse öffnen. Es präsentiert Ihnen das Dateisystem in Form eines Baums, den Sie mit der Tastatur und / oder der Maus bearbeiten können. Sie können damit auch einfache Dateisystemoperationen ausführen.

  4. XPTemplate Das beste Template-Plugin der Welt.

    Code-Snippets-Engine für Vim mit Snippets-Bibliothek. Mit XPTemplate können Sie Codes reibungslos, schnell und bequem schreiben.

  5. rails.vim Wenn Sie Rails- , ist dies unverzichtbar.

    TextMate ist vielleicht die neueste Begeisterung für die Entwicklung von Ruby on Rails-Anwendungen, aber Vim ist für immer. Dieses Plugin bietet die folgenden Funktionen für die Ruby on Rails-Anwendungsentwicklung.

  6. 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


3

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.


3

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


1

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.


0

Normalerweise richte ich screenfü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 nicht screentun; Sie können dies mit verschiedenen Terminalfenstern oder mit Registerkarten in einem Multitab-Terminal tun. Ich finde screenes stabiler als andere Alternativen: Wenn Ihre Terminal-App abstürzt, können Sie einfach ein anderes Terminal starten und die Verbindung zu Ihrer noch laufenden screenSitzung wiederherstellen. screenist 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 aboutBildschirm .') 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, uum den Vorgang rückgängig zu machen, :rund 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. :makewird ein Build erstellt, und die Unterstützung für die Quickfix-Liste ist gut etabliert. So können Sie dann :copenden 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 :lmakedafü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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.