Verwenden von Vim beim Codieren einer umfangreichen Anwendung


17

Ich beginne Vim zu lernen und folge einigen der hier in stackexchange gegebenen Ratschläge. Ich fange an, es in einigen Spielzeugprojekten zu verwenden, und ich bin damit cool.
Aber ich begann mich zu fragen, wie Sie produktiv sein können, ohne ständig andere Dateien zu öffnen, nur um zu wissen, wie der Name dieser Klasse lautet, welches Makro in einer anderen Datei enthalten ist usw. usw.

Was sind die allgemeinen Ratschläge, die Sie geben können?


1
Sie müssen auf jeden Fall einige Vim-Skripte hinzufügen, um zu helfen. Ich benutze Vim, um viel zu programmieren, und ich benutze immer ctags, um mich im Quellcode zurechtzufinden. Welche Sprache benutzen Sie?
tehnyit

Antworten:


10

Ein Aspekt erfahrener Programmierer, die von einer IDE zu einer Konsolen- / XTerm-Umgebung wechseln, ist die Suche nach einem Ersatz für die Indizierung von Quellcodeobjekten (Funktionsnamen, Variablen). Ich glaube, der allgemeine Begriff für Microsoft Visual Studio ist Intellisense oder so ähnlich.

In der Unix / Linux-Welt, wie vim, wird ein Tool verwendet, wenn ctagsoder die beliebte mehrsprachige Open Source-Implementierung, üppige ctags . Es ist nicht vimspezifisch und wird von einer Reihe von Unix-, Linux-, MS Windows- und Mac OS-Texteditoren unterstützt, darunter Emacs, CRiSP, vile und eine Reihe anderer vi-Klone, nedit, gedit, JED, UltraEdit, BBEdit und DreamWeaver (Einige davon sind über Plugins von Drittanbietern).

Darüber hinaus macht gutes Design und durchdachte Zerlegung die Organisation größerer Projekte das Projekt überschaubar, da es nur 1-2 offensichtliche potenzielle Stellen gibt, an denen nach bestimmten Informationen ( typedefoder classDefinitionen usw.) gesucht werden kann.

Außerdem verwende ich mehrere Instanzen von vim (oft viewzum schreibgeschützten Anzeigen von Quelldateien) sowie eine eingeschränkte Verwendung mehrerer Bearbeitungspuffer pro vim-Instanz (hauptsächlich zum Verschieben oder Umgestalten von Code zwischen Dateien). Ich finde, dass die Verwendung von nur wenigen Quelldateien, die gleichzeitig geöffnet sind, auf eigene kleine Weise hilfreich sein kann, um mich auf die anstehende Aufgabe zu konzentrieren.


1
+1 für die Andeutung üppiger Tags !
Attila O.

1
Ich finde, dass es sehr hilfreich ist, nur organisiert zu sein. Wenn Sie sich ein Artefakt in der Quelle ansehen und "Oh, das muss an dieser Stelle definiert werden" sagen, werden die Dinge viel einfacher. Andererseits ist das Starten von vim-Sessions so schnell, dass es ziemlich normal wird, ein halbes Dutzend auf einmal zu öffnen
Zachary K,

@ ZacharyK Ein halbes Dutzend? Normalerweise habe ich am Ende des Tages ein volles Dutzend
Izkata

hängt vom Tag ab
Zachary K

7

Ich habe nicht die Absicht, an der Debatte zwischen VIM und IDE teilzunehmen. Ich denke, das ist eine persönliche Präferenz. Aber ich benutze viel VIM und deshalb finde ich es sehr mächtig, VIM zu benutzen

Zwei Teile der Antwort:

A. Die meisten Dinge, die mit VIM möglich sind Die meisten Dinge, die Sie mit IDEs tun können (ich versuche nicht, alle Funktionen zu platzieren, sondern nur ein paar nicht offensichtliche, die das Aussehen von vi einschränken)

  1. Sie können die Prototypen durchlaufen, wenn Sie ctagsaktiviert haben und dies tunctrl+{

  2. Sie können mehrere Fenster gleichzeitig öffnen, indem Sie den Befehl sing: sp 'filename' eingeben. Natürlich öffne ich manchmal nur mehrere Terminals, um das Leben einfacher zu machen.

  3. Leistungsstarke Syntax-Hervorhebung. Standard sowie andere Sachen. Im Gegensatz zu einigen IDEs erhalten Sie auch einen sehr klaren Hinweis, wenn offene Klammern nicht übereinstimmen, Zeichenfolgen verwenden oder nicht mit geschlossenen übereinstimmen. Es ist eher für die meisten Sprachen als spezifisch.

  4. Sie können die Befehlszeile mit command ausführen, ":!make"ohne das Fenster zu verlassen.

  5. Traverse viel schneller basierend auf dem Wort, basierend auf der Suche (vi unterstützt Regexp, wenn Sie verfügbar sind), und Sie können { to } mitESC %

  6. Es ist möglich, in GDB zu arbeiten, während Sie Schritt für Schritt debuggen und vi behalten (in einem anderen Fenster, um den Code zu bearbeiten). Wenn Sie sich entscheiden, die Datei zu ändern, können Sie sie erneut erstellen und in GDB neu laden.

B. Viele Dinge, die Sie in VIM besser finden

  1. Suchen und Ersetzen ist definitiv viel mächtiger.

  2. Sie können Ihr individuelles Erscheinungsbild und (Schwarz + Grün als Kontrast zu Weiß + Blau) und vor allem Ihren eigenen, leistungsstarken Befehl erstellen.

  3. Vertikaler Block auswählen. Versuchen Sie ctrl+v, den Cursor vertikal zu bewegen. Das ist wirklich ein unvorstellbares Feature!

  4. Hört sich komisch an, aber versuchen Sie, einen Block auszuschneiden / zu kopieren, und müssen Sie ihn 30 Mal einfügen! Es ist nicht mühsamer als ein Mal. Versuchen Sie außerdem, eine Aktivität ein- oder mehrmals zu wiederholen (nicht rückgängig zu machen).

  5. Automatisches Einrücken, Tabulatorsteuerung und automatische Konvertierung Ihrer Kommentare in Blockkommentare oder Kommentare mit speziellem Stil.

  6. Effektiver Zusammenführungskonflikt mit vimdiff.

  7. Das Wichtigste in einer konsolenbasierten Arbeitsumgebung ist, dass Sie niemals die MAUS berühren! Wenn Sie also schnell auf der Tastatur sind, sind IDEs nicht gut.

  8. Arbeiten Sie auf mehreren Computern und Servern gleichzeitig! Sieht nicht offensichtlich aus, aber manchmal, wenn Sie am Server arbeiten, melden Sie sich direkt bei mehreren Computern an und erledigen Dinge.

Beantwortet die Vorgehensweise in vi, wenn diese Funktionen ernsthafte Anforderungen stellen. Siehe diese Seite Vimcast . Natürlich gibt es viele.

Aber ja, die meisten auf Konsolen basierenden Dinge sind altmodisch und ich sage in keiner Weise etwas gegen IDEs.


Kleiner Hinweis: In vim ist ein :makeBefehl integriert, den Sie nicht einmal benötigen !(der für diejenigen, die vim nicht verwenden, einen Befehl auf dem Terminal ausführt). Und ich habe es erst vor ctrl-vein paar Wochen gefunden und jetzt benutze ich es ständig, es ist unglaublich nützlich.
Kevin

@ Kevin - ok, ich wusste nichts über <code>: make </ code>! Das war aufregend zu wissen. Dies ist eine Art Romanze, die Sie mit VIM bekommen - man kann nie eine vollständige Liste der Funktionen erstellen, die VIM Ihnen jemals erlauben kann !! Es überrascht dich immer wieder. Vielen Dank.
Dipan Mehta

Ja, so ist es großartig. Der Vorteil :makeist , dass es bewegt sich automatisch auf den ersten Fehler, und man kann sie mit navigieren cnund cpfinden :help make. Das habe ich eigentlich erst gemerkt, als ich es nachgeschlagen habe. Ich mache normalerweise in einem anderen Fenster und pwd, es scheint, als müsste man sich im selben wie das Makefile befinden, obwohl man eines in das src-Verzeichnis legen könnte, nur um zum root zu gelangen und es dort zu machen.
Kevin

4

Meiner Meinung nach bietet Vim einen sehr starken Editor mit grundlegenden Funktionen, aber es liegt an Ihnen, ihn mit Skripten / Addons aufzupeppen, die Sie höchstwahrscheinlich in Ihren Projekten verwenden werden. Dies hängt wahrscheinlich davon ab, ob Sie hauptsächlich Skripts, Dokumentationen oder Dateien bearbeiten, die kompiliert werden müssen.

Als Beispiel verwende ich zencodingfür die gelegentliche HTML / CSS Bearbeitung snipmatefür Textmate-like - Snippets und ein paar Python-Add-ons , ( pyflakes, pep8, vimpdb, etc.) für Python - Codierung, was ist , was ich tue oft am meisten.

Dann gibt es andere Addons, die ich nicht oft benutze, aber ich finde sie immer wieder hilfreich, wie Dpasteund ConqueTerm.

Für mich sind die nützlichsten Funktionen von Vim jedoch integriert (zeitbasiertes Rückgängigmachen, schnelle Navigation, Bereichsfilter usw.) - Dinge, die ich nicht finden konnte (oder die zumindest nicht so einfach zu erreichen sind) ) in IDEs. Wenn Sie also Ihr Vim so eingerichtet haben, dass es die Teile einer IDE enthält, die Sie wirklich benötigen ( snipmate, ctags...), können Sie sowohl von der IDE als auch von der Konsolenumgebung profitieren.

Ich benutze Vim nur für die Konsole, daher kann ich nicht sagen, wie hilfreich diese Tools für Gvim sind.

Trotz aller Addon-Güte finde ich mich jedoch immer noch !grep ...oder gelegentlich am Laufen ^Z + find ....


3

Ich programmiere alles in vim. Ich finde es tatsächlich einfacher als jede andere von mir verwendete IDE. Sie können auch auf demselben Bildschirm mehrere Dateien gleichzeitig öffnen (Registerkarten und Fenster nachschlagen). Normalerweise arbeite ich in X, daher sind mehrere (6) xterm-Bildschirme geöffnet: einer für c-Dateien in vim (mehrere in Registerkarten), einer für Header in vim (auch Registerkarten) und Nicht-vim-Fenster: Erstellen, Debuggen , Konfiguration usw. Auch wenn ich mich auf einer reinen Konsole befinde, kann ich mithilfe von Tabulatoren, Fenstern und Code-Falzen sehen, was ich brauche, und ich kann Hilfeseiten erstellen und sogar anzeigen, ohne vim zu beenden richtige Befehle. Und es gibt so viele, dass ich sicher noch nicht einmal die Hälfte davon gemeistert habe. Und es ist schwer, Vims Suche und Ersetzung zu übertreffen.


1

Es gab viele groß angelegte Anwendungen (von mir mindestens zwei), und ich vermute, dass viele weitere vollständig in Vim geschrieben werden. IDEs als solche sind sozusagen immer noch eine recht moderne Innovation .

Es fehlt jedoch ein bisschen Plain Vanilla Vi (Autsch) oder Vim. Es hilft ein wenig, Vim zu kennen und in gewisser Weise zu denken , und Plugins helfen viel , wofür www.vim.org eine unendliche Quelle ist. Einige sind spezifisch für die Sprache, die Sie verwenden, und einige allgemeine (zum Kommentieren, zum Durchsuchen von Dateien, für ...) machen es schnell zu einer sehr schnellen Entwicklungsumgebung. Immerhin (und einige werden es sicherlich argumentieren) ist eine IDE nur ein Editor mit Plugins in einer schöneren Oberfläche. Es gibt nicht viel grafische Sachen in einer entweder IDE.

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.