Welche spezifischen Produktivitätssteigerungen bietet Vim / Emacs gegenüber GUI-Texteditoren?

100

Dies ist nicht als Troll oder Flammenköder oder ähnliches gedacht. Ich verwende Vim seit einigen Monaten als bevorzugten Konsoleneditor (zum Bearbeiten von Konfigurationsdateien in meinem Terminal), aber ich glaube nicht, dass ich es für meine normale tägliche Arbeit beim Schreiben von Webanwendungen aushalten kann , was ich mit einem GUI-Texteditor mache (welcher nicht wichtig ist).

Ich habe das Gefühl, dass mein GUI-Texteditor alles kann, was ich für meine Arbeit brauche. Es hat eine anständige Suche / Ersetzung mit automatisch vervollständigten Historien für beide. Es verfügt über Syntaxhervorhebung, Zeilennummerierung, eine Oberfläche mit Registerkarten, einfaches Kopieren und Einfügen usw. Das einzige, was meinem aktuellen Editor fehlt, ist die Übereinstimmung mit regulären Ausdrücken, aber es gibt viele GUI-Texteditoren, die Regex-Suchen / Ersetzen durchführen.

Welche Produktivitätsvorteile hat Vim (oder sogar Emacs) gegenüber einem GUI-Texteditor, abgesehen von der Tatsache, dass er auf jedem Computer installiert ist. Ich möchte bestimmte Aufgaben, die mit Vim / Emacs besser / schneller sind oder die mit vorhandenen GUI-Texteditoren einfach nicht möglich sind.

Adam Plumb
quelle
1
Ich kann mich nicht erinnern, dass vim auf einem meiner Windows-Computer installiert wurde ...
Greg
9
@ Greg: Es wird nicht passiv installiert. Du gehst raus und machst es selbst. Entweder sind Sie kein echter Softwareentwickler, oder Sie haben so viel getan, dass Sie vim jetzt im Schlaf installieren. :-)
TED
6
Dies sollte als Community-Wiki-Frage markiert werden, da es subjektiv ist.
STW
7
@Yoooder: Warum jammern die Leute immer wieder über Community-Wiki-Fragen? Ich habe keine Regel für Community-Wikis gefunden.
John Smith

Antworten:

110

Für Vim:

  • Vim lässt sich besser in andere Tools (Shell-Befehle, Skripte, Compiler, Versionskontrollsysteme, Ctags usw.) integrieren als die meisten Editoren. Selbst etwas Einfaches wie :.!das Weiterleiten der Ausgabe eines Befehls in einen Puffer ist in den meisten GUI-Editoren nicht zu finden.

  • Eine Oberfläche mit Registerkarten ist nicht so schön wie die "Fenster" -Schnittstelle, die Vim / Emacs Ihnen bietet. Sie können zwei oder mehr Dateien gleichzeitig nebeneinander anzeigen. Je mehr Sie auf dem Bildschirm sehen können, desto mehr können Sie über Ihr Problem nachdenken, anstatt die Variablennamen und Funktionssignaturen im Kopf zu führen.

  • Unterschätzen Sie nicht die Kraft der regulären Vim-Ausdrücke. Es gibt viele Vim-spezifische Erweiterungen, die einer bestimmten Spalte, einer Markierung, der Cursorposition, bestimmten Zeichenklassen (Schlüsselwörtern, Bezeichnern) usw. entsprechen.

  • Integriert diffund grep(plattformunabhängig, sodass Sie nicht jedes Mal, wenn Sie den Computer wechseln, ein neues Tool herunterladen und erlernen müssen).

  • Der visuelle Blockmodus (zum Bearbeiten von Spalten) fehlt vielen Redakteuren, ohne den ich nicht leben kann. Ich habe die Leute bei der Arbeit schockiert und beeindruckt, indem ich nur ein paar Tastendrücke bearbeitet habe, die jemand sonst zehn Minuten lang manuell gemacht hätte.

  • Mehrere Copy / Paste-Register. Wenn Sie nur eine haben, werden Sie seltsame Verrenkungen durchlaufen, um ein Überladen der Zwischenablage zu vermeiden. Das solltest du nicht müssen.

  • Das Undo / Redo-System von Vim ist unschlagbar. Geben Sie etwas ein, machen Sie es rückgängig, geben Sie etwas anderes ein, und Sie können immer noch das erste zurückgeben, das Sie eingegeben haben, da Vim einen Rückgängig-Baum anstelle eines Stapels verwendet. In fast jedem anderen Programm geht unter diesen Umständen die Geschichte der ersten Eingabe verloren.

  • Das Bewegen, Kopieren, Einfügen und Löschen von Text ist in Vim wahnsinnig schnell. Die Befehle sind einfach, einzelne Tastendrücke und zusammensetzbar. Addieren Sie alle Zeiten, in denen Sie eine sorgfältige, mühsame Mausmarkierung und Strg-X ausführen, und ersetzen Sie sie dann alle durch eine da((löschen Sie eine Reihe übereinstimmender Parens und alles in ihnen). Das spart mehr Zeit als Sie denken

  • Die kleinen Dinge, wie *das Suchen des Wortes unter dem Cursor oder .das Wiederholen eines Befehls oder %das Wechseln zwischen einem öffnenden und einem schließenden Paren. Viel zu viele davon, um sie aufzulisten.

  • Integrierte Skriptsprache und leistungsstarke Key-Mapping- und Makrofunktionen, sodass der Editor auf beliebige Weise erweitert werden kann. Tonnenweise bereits geschriebene und herunterladbare Skripte.

Wenn Sie genau hinschauen, werden Sie feststellen, dass Vim selbst Funktionen, die auch andere Editoren haben, oft besser abschneidet. Alle Editoren verfügen über eine Syntaxhervorhebung, aber Vim verfügt über eine Syntaxdatei für nahezu jedes Dateiformat unter der Sonne, häufig mit vielen Konfigurationsoptionen, und es ist kinderleicht, eine eigene zu schreiben. Viele Editoren verarbeiten unterschiedliche Dateicodierungen in Ordnung, aber Vim bietet Ihnen sehr spezifische und kinderleichte Möglichkeiten, Dateicodierungen festzulegen und zwischen ihnen zu konvertieren. Das allererste, was mich an Vim beeindruckt hat, ist, wie perfekt es mit Optionen zum Einrücken von Tabulatoren / Leerzeichen und Unix / DOS-Zeilenumbrüchen im Vergleich zu anderen Editoren umgeht, mit denen ich zu dieser Zeit Probleme hatte.

Viele dieser Punkte gelten gleichermaßen für Emacs (auf unterschiedliche, aber normalerweise gleich starke Weise).

Brian Carper
quelle
2
Dies ist ein gutes Beispiel für einige konkrete Dinge, die die Produktivität in vim verbessern.
Adam Plumb
14
Sie haben vergessen, die erstaunliche plattformübergreifende Unterstützung zu erwähnen. Selbst in dem Maße, in dem Sie denselben Editor in der Befehlszeile verwenden, den Sie in einer Fensterumgebung verwenden.
Singletoned
3
Der Punkt zwischen Registerkarten- und Fensteransicht ist etwas veraltet. Die meisten von mir verwendeten GUI-Editoren ermöglichen ein Fensterlayout.
Shawn O'Hare
1
Der Org-Modus in Emacs ist ein enormer Produktivitätsgewinn.
18 Bytes
37

(Vim ist mein Gift; ich bin sicher, Emacs bietet ähnliche Gewinne)

Der größte Vorteil: Sie müssen nicht die Maus berühren.

Für mich ist es am einfachsten, vorwärts (oder kurz davor) zu einem bestimmten Buchstaben oder einer bestimmten Buchstabenkombination zu springen oder mit ein paar Tastenanschlägen zurückzuspringen. Wenn Sie zweimal oder zehnmal mit derselben Bedingung vorwärts springen, müssen Sie ihr lediglich eine Zahl voranstellen.

Wenn Sie eine Bearbeitung wiederholen müssen, springen Sie vorwärts zu dieser Stelle (2-3 Tastenanschläge) und drücken dann "." um die letzte Bearbeitung zu wiederholen. Das Vorwärts- (oder Rückwärtsspringen) ist einfacher - ein Tastendruck - wenn es sich um dieselbe Suchbedingung handelt.

Grundsätzlich können Sie mit einer kurzen Vorlaufzeit zehn oder zwanzig Tastaturkürzel lernen, die bedeuten, dass Sie Ihre Hand nicht ständig bewegen müssen, um die Maus zu greifen. Das gibt Ihnen drei- oder viermal so viele Bearbeitungsbewegungen / Befehle wie wenn Sie die Maus weiter greifen müssten.

Nach ein paar Tagen werden Sie jedes Mal mürrisch <Down>, wenn Sie in einem GUI-Editor nach der Maus greifen müssen (oder 15 Mal drücken müssen).

Jeremy Smyth
quelle
2
Es sollte beachtet werden, dass Sie, wenn Sie gVim verwenden (oder wenn Sie gpm installiert haben und nur einfaches vim im Terminal verwenden), die Maus tatsächlich verwenden können, wenn Sie möchten. Es gibt einige Situationen, in denen die Verwendung der Maus nützlich ist.
Thebrokencube
1
Ich habe "set mouse = a" in meiner .vimrc, nur für den Fall, dass ich jemals ein paar visuelle Elemente durchwischen muss;)
Jeremy Smyth
Ja, die Maus kann Zeit sparen, wenn Sie Textbereiche auswählen oder den Cursor an eine bestimmte Stelle in einer großen Textmenge bewegen. Ansonsten ist es eine Verschwendung.
TED
1
Vom Klang her kann ich das, was Sie beschrieben haben, mit Strg + Links oder Strg + Rechts in anderen Editoren tun. Ich höre auch immer wieder, dass Sie so etwas wie "d5w" tun können, um 5 Wörter zu löschen ... aber Strg + Entf macht dies schneller.
DisgruntledGoat
4
Strg-Rechts bewegt sich nur ein Wort vorwärts. Sie müssten es fünfmal tun, um fünf Wörter vorwärts zu kommen. In vim würden Sie 5w eingeben, um 5 Wörter vorwärts zu gehen :) oder 9w, um 9 Wörter vorwärts zu gehen. oder) um zum Anfang des nächsten Satzes zu gelangen, oder} um zum nächsten Absatz zu gelangen. Es gibt so viele kleine Tastenkombinationen mit einer oder zwei Tasten, mit denen Sie sich in alle möglichen cleveren Richtungen bewegen können. Und wenn Sie alles bis zu dem Punkt löschen möchten, zu dem Sie gerade verschoben haben, stellen Sie dem Bewegungsbefehl einfach d voran. Um drei Sätze zu löschen, ist d3) alles, was Sie brauchen :)
Jeremy Smyth
33

Ich habe mich immer gefragt, warum nur wenige Leute Vim verarschen. Sehen Sie das Video von Vim Power User in Aktion:

https://www.youtube.com/watch?v=FcpQ7koECgk

Wenn Ihr aktueller Redakteur das kann, was er tut, müssen Sie nicht wechseln! :) :)

Lesen Sie auch diese http://www.viemu.com/a-why-vi-vim.html

Nachdem ich mir das Video angesehen und diesen Artikel gelesen hatte, hatte ich keine andere Wahl, als VIM zu lernen. Es ist fast ein Jahr her, seit ich zu VIM gewechselt bin und ich kann mir nicht vorstellen, etwas anderes zu verwenden.

SolutionYogi
quelle
4
Wow, diese Videos sind wirklich großartig! Danke, dass du sie gepostet hast!
Thebrokencube
Ziemlich interessante Videos, es ist eine Schande, dass ich so lange brauche, um mich in der Praxis an alle zu erinnern. :)
Frerich Raabe
8
Der Autor des ersten Videos muss den visuellen Blockmodus lernen - er ist schneller als Makros, um die Textblöcke unten zu ändern.
Peter
23

Ich denke, eine der wirklichen Fähigkeiten eines dedizierten Texteditors ist die Makrobearbeitung. Wiederholungen sind für viele Programmierer schmerzhaft, und das Schreiben geeigneter Makros kann grenzwertig unterhaltsam sein. Wenn Sie nicht alles über die Tastatur ausführen, erfordert das Erstellen von Makros zusätzliche Befehle, anstatt die bereits verwendeten zu verwenden.

Stefan Mai
quelle
5
Anpassbarkeit ist eine Funktion, die in fast allen GUI-Editoren fehlt. Sie können ein Makro-Erweiterungsprogramm eines Drittanbieters (AutoKey, was auch immer) verwenden, um einige dieser Probleme zu lösen. Es ist jedoch praktisch, es in den Editor zu integrieren.
Alex Feinman
Oh, für die Aufzeichnung. Ich arbeite mit Microsoft-Produkten und die Verwendung von VimEmu für Visual Studio war ein Glücksfall. Ich gehe immer noch gerne nach Hause zu meinem Terminal und Vim :)
Stefan Mai
1
ViEmu ist definitiv ein Glücksfall. Ich würde sogar sagen, dass Visual Studio ohne es absolut unbrauchbar ist. :)
thebrokencube
1
Textpad unter Windows hat dies und es ist unglaublich einfach: Drücken Sie auf Aufzeichnen, führen Sie das Makro aus und speichern Sie es. Sie können ihm auch Verknüpfungen zuweisen. Leider habe ich unter Linux kein Äquivalent gefunden (TP funktioniert unter Wine, sieht aber hässlich aus und vermisst einige Linux-Funktionen).
DisgruntledGoat
1
@DisgruntledGoat - Wenn Sie Strg-X (als "Hit Record" und Strg-X) als "Speichern" betrachten können, haben Sie jetzt ein Äquivalent unter Linux, Windows, Unix und jeder anderen Plattform gefunden, auf die Emacs portiert wurde zu.
TED
15

Ich bin mit vi-Tastenkombinationen halbkompetent, aber insgesamt bevorzuge ich Emacs. Der Grund, warum diese Editoren so begeisterte Anhänger haben, ist, dass das von ihnen bereitgestellte Bearbeitungsmodell leistungsfähiger ist als neuere Systeme, weshalb die Bereitstellung von "vi-Tastenkombinationen" oder "emacs-Tastenkombinationen" nicht ausreicht, selbst wenn Sie keine Erweiterungsfunktionen verwenden oder Anpassungen für Emacs oder vi.

Ich werde nur über Emacs 'Modell sprechen, weil ich es am besten verstehe. Das heute übliche Modell für die Textbearbeitung umfasst einen Textpuffer, in den Text eingefügt, gelöscht, ausgewählt und in die Systemzwischenablage ausgeschnitten / kopiert / eingefügt werden kann.

Emacs-Puffer können diese Operationen natürlich unterstützen. Neben der Verfolgung der Cursorposition für jedes Fenster, in dem sie sichtbar sind, verfolgen sie auch die in ihnen vorgenommenen "Markierungen". Der Text zwischen dem "Punkt" (Cursorposition) und der "Markierung" wird als "Region" bezeichnet und entspricht in etwa der Auswahl in den Mainstream-Editoren.

Der Unterschied besteht darin, dass Emacs die letzten Stellen verfolgt, an denen die Markierung im Markierungsring gesetzt wurde, und Sie mit einem Tastendruck (oder zwei, je nach Konfiguration) zu ihnen zurückkehren können. Ich finde das äußerst nützlich, zumal viele Emacs-Befehle, die Ihren Standort im Puffer ändern, die Markierung an Ihrem alten Standort setzen. Ein Beispiel ist, wenn ich ein Python-Modul bearbeite und eine Importanweisung am Anfang der Datei hinzufügen muss. Der Tastendruck zum Aufrufen des Puffers (Alt- <) setzt die Markierung. Ich füge die Importanweisung hinzu. Ich drücke Strg-u Strg-Leertaste und bin wieder da, wo ich angefangen habe. Ich kann dies auch weiterhin tun, um zu früheren Positionen zurückzukehren. (Vielleicht musste ich beim Hinzufügen dieser Importanweisung Text auswählen.)

Der andere (und bekanntere) Emacs-Unterschied ist der Kill Ring. Die meisten Tastenanschläge zum Entfernen von Text aus dem Puffer speichern Text im Kill-Ring, der dann mit dem Befehl "yank" (Strg-y) abgerufen werden kann. Das wesentliche Merkmal ist, dass nachfolgende Ruck-Befehle älteren getöteten Text abrufen. Sie können also mehrere Textabschnitte hintereinander beenden und sie dann der Reihe nach abrufen. Sie können den Kill-Ring auch nach einem Ruck mit Alt-y durchlaufen, den abgerufenen Text entfernen und den nächsten Eintrag in den Ring einfügen.

Emacs hatte diese Funktionen im Jahr 1978. Das einzige andere wichtige System, das sie in irgendeiner Weise übernimmt, ist NeXTStep (und jetzt von Cocoa geerbt). Andere Tools bieten mehr Funktionen für bestimmte Aufgaben, können in Sprachen erweitert werden, die einfacher zu verwenden sind als Emacs Lisp, und haben schönere visuelle Oberflächen ... Emacs bleibt jedoch besser in der Textbearbeitung. Deshalb ist es so schwer zu beenden, wenn Sie erst einmal wissen, wie man es benutzt.

Allen
quelle
Zweifellos können Emacs für viele eine praktikable Option sein, da es nur so viele Benutzer gibt. Aber wie lange brauche ich, um es mir bequem zu machen? Ich bin meiner Erfahrung nach ein sehr schneller Typer und kann das MacBook Pro Touchpad sehr gut mit einem GUI-Texteditor wie Textmate verwenden. Ich konnte mich nie an Emacs mit all den Bindungen gewöhnen. Es tat meinen Händen nach ungefähr einem Monat weh; Insgesamt bin ich mir einfach nicht sicher, ob Emacs mich schneller macht. Das Mac-Zeigesystem ist sehr präzise und schnell, und diese integrierten GUI-Texteditoren verfügen über eine Vielzahl von Tastenkombinationen, die viel bewirken können. Ich habe viel Zeit investiert und noch keine Gewinne gesehen.
user798719
13

Dies ist nicht gerade eine spezielle Aufgabe, aber für Menschen, die möglicherweise sogar an RSI leiden, ist die Tatsache, dass Ihre Hände die Tastatur niemals in vim lassen, fast unbezahlbar. Tatsächlich bin ich bei der Arbeit mit der Maus nach links gegangen, weil ich dadurch meine Hand weniger bewegen konnte, um nach der Maus zu greifen (meine Tastatur zu Hause hat keinen Ziffernblock, sodass ich sie rechts halten kann).

Ein weiterer kleiner Vorteil war, dass IIRC, das ursprüngliche vi, entwickelt wurde, um das Bearbeiten von Dateien über eine schrecklich langsame Remoteverbindung zu beschleunigen. Zugegeben, das passiert heute nicht annähernd so oft, aber wenn Sie eine langsame Verbindung haben, viel Glück beim Ausführen eines GUI-Texteditors und dessen Reaktion.

Mark Rushakoff
quelle
2
Wenn Sie eine langsame Verbindung haben, würde ich die Verwendung von Emacs und Tramp empfehlen.
John Smith
1
Änderungen über SFTP bearbeiten, beim Speichern synchronisieren.
Roman A. Taycher
@Roman: Emacs und Tramp im Grunde macht das (mehr oder weniger) ohne zusätzlichen Aufwand an allen --at meisten Sie haben Ihr Passwort einmal oder zweimal eingeben. Danach funktioniert das Bearbeiten der Remote-Datei genauso wie das Bearbeiten einer lokalen Datei. Beim Speichern werden die Änderungen automatisch an den Remote-Computer gesendet.
Tikhon Jelvis
13

Für mich sind die großen Produktivitätssachen

  • Ich kann so ziemlich alles von der Tastatur aus machen.
  • Leistungsstarke Makros.
  • In meiner 20-jährigen Karriere mit 9 Betriebssystemen haben sich die grundlegenden Tastaturbindungen nicht geändert. Ich kann auf so ziemlich jedes System springen und kenne mich bereits im Editor aus.
  • So gut wie jede Funktion, die Sie jemals in einem Texteditor haben möchten, wurde bereits hinzugefügt.
TED
quelle
11

Eine Sache, die ich an vim wirklich mag, ist der Befehl "repeater". Grundsätzlich wird durch Drücken .im Befehlsmodus Ihre letzte Aktion wiederholt. Dies ist nur ein Beispiel für wirklich coole Funktionen, die "Programmierer-Texteditoren" haben, die GUIs oft nicht haben.

thebrokencube
quelle
Oh ja! Das ist einer der süßesten Befehle! Ich kann nicht ohne codieren :-)
Jay Atkinson
8

Nach meiner Erfahrung sind die wichtigsten Produktivitätsgewinne, die vim und emacs (ich bin selbst eine vim-Person, aber emacs ist sicherlich ähnlich) bieten:

  • Sie können diese Funktionen haben , die moderne IDEs bieten (wie ein Tastendruck bearbeiten-build-run - Zyklen und Inline - Dokumentation und Tabulatorvervollständigung und so weiter) , aber Sie nicht müssen . Der Produktivitätsgewinn? Sie sehen nur so viel, wie Sie sehen möchten. Nach meiner Erfahrung haben IDEs die Produktivität der Menschen nicht gesteigert, auch weil sie zu viele Informationen zeigten (alle Arten von Browsern). Dieses "zusätzliche Stück Leistung, wenn Sie es brauchen - aber nicht früher" ist meiner Meinung nach ein ziemlicher Produktivitätsgewinn.

  • Die Editoren sind bei Programmierern sehr beliebt, was bedeutet, dass riesige Repositories mit Skripten, Büchern und Benutzergruppen verfügbar sind.

  • Nach meiner Erfahrung (ich kann hier nur für vim sprechen) ist der durchschnittliche vim-Benutzer ein ziemlich guter Software-Ingenieur. Ich weiß nicht, warum das so ist (oder vielleicht habe ich einfach Glück), aber vielleicht haben Leute, die sich an ein „altes“ Tool wie Emacs oder Vim gewöhnt haben, das richtige Engagement (und den Kontakt zu anderen Leuten wie diesen) ). Vielleicht ist es ein indirekter Effekt dieser Editoren, aber es hat sich als ziemlich interessant herausgestellt, mit anderen vim (oder emacs) Leuten im IRC abzuhängen, da dieselben Leute auch ziemlich interessiert waren an allen Arten von Fragen der Softwareentwicklung (oder Informatik) . Diese Redakteure scheinen eine bestimmte Art von Persönlichkeit anzuziehen. :-)

Frerich Raabe
quelle
7

Der "Produktivitätsgewinn", den ich durch die Verwendung eines leichten Emacs-Klons für winzige Programme erhalte, besteht darin, dass er wie ein gefetteter Blitz startet. Normalerweise kann ich ein schnelles Testprogramm in C # starten, bevor Visual Studio das Laden einer "Sandbox" -Lösung abgeschlossen hat.

Natürlich könnte ich Visual Studio einfach offen lassen (oder ein anderes VS offen lassen, wenn ich gerade daran arbeite), aber dann würde es ausgetauscht, wenn ich es für eine Weile im Leerlauf lasse usw.

Für alles, was eine bedeutende Größe hat - oder wenn ich die API, die ich verwende, nicht gut kenne -, ist eine IDE der richtige Weg, IMO.

Jon Skeet
quelle
6
Führen Sie Emacs im Daemon-Modus aus, und die "Startzeit" ist trivial.
Aehlke
6

Ich benutze gvim für Windows, technisch gesehen ist es ein GUI-Texteditor, aber es ist vim.

Zur Produktivitätssteigerung finde ich:

  1. Ich muss nie die Maus benutzen, deshalb bin ich schneller.
  2. Suchen, Ersetzen, Kopieren / Einfügen usw. sind mit vim-Tastenkombinationen im Vergleich zu Mausbewegungen schneller (sobald die Lernkurve überwunden wurde).
  3. Wie in den vorherigen Kommentaren erwähnt, werden RSIs erheblich reduziert. Meine Handgelenke haben mir gedankt, seit ich zu vim gewechselt bin.
  4. Es ist leicht und schnell
Codefly
quelle
4

Wissen Sie, für vi kommt es meiner Meinung nach auf einen Einfüge- und Befehlsmodus an. Es scheint zwar ein Rückfall in eine Zeit zu sein, in der Sie sich nicht auf Cursor oder Sondertasten verlassen konnten, aber es bedeutet wirklich, dass viele leistungsstarke Bewegungs- und Textmaniuplierungsbefehle eine minimale Anzahl von Tastenanschlägen sind. Bei der produktiven Codierung geht es nicht um die Eingabe von Massentext (die Standardeinstellung in "modernen" Editoren), sondern um einen Ausbruch von Massentext, gefolgt von erheblichen kleinen Änderungen und noch größeren Browsing-Perioden.

Dies kam für mich persönlich zum Tragen, als ich vi über ein Campus-Netzwerk mit hoher Latenz nutzte. Sie könnten leicht 10 oder 15 Zeichen vor der Antwort bekommen. Mit vi konnte ich bequem vorhersagen, wo diese Befehle mich verlassen würden, und mit nahezu normaler Geschwindigkeit arbeiten. Dieses verdrehte Fachwissen ist unter normalen Bedingungen ein kontinuierlicher Vorteil - weniger visuelle Intelligenz, die für eine konstante grafische Rückmeldung vorgesehen ist.

Die gängigen Suchbeschleuniger * und # eignen sich hervorragend zum Durchblättern von Code. Und% zum Abgleichen von Klammern ist äußerst nützlich. Sicher, scheint im Vergleich zu ctl-] kaum viel zu sein, aber die Hälfte der Tastenanschläge summiert sich.

Persönlich benutze ich winvi, das ein paar große Dinge hinzufügt, die vim sicher auch hat. Ein schneller Sprung in den Hex-Modus löst viele "Was zum Teufel ist los" -Textprobleme. Und die völlig flexible Handhabung von Zeilenenden ist ein Glücksfall, der für einen Texteditor zu einem erwarteten Merkmal geworden ist. Schließlich kann es jede Datei öffnen, unabhängig vom Inhalt. Dies entspricht einer Elite-Hacking-Fähigkeit erster Ordnung.

Unter Unix können Sie die Programmausgabe schnell erfassen oder sogar Abschnitte Ihrer Datei über externe Befehle filtern. Eine extrem mächtige, aber meiner Meinung nach nicht ausgelastete Funktion.

George Phillips
quelle
3

Ich benutze Vim ziemlich oft. Es ersetzt UltraEdit für mich jedoch nicht. Da viele Positive aufgelistet wurden, werde ich wohl gegen den Strich gehen und einige Belästigungen mit Vim auflisten.

  • Schwache FTP-Handhabung. Ich "sortiere" viele Websites, und es ist ein großer Mangel für mich, Dateien auf einem Remote-FTP-Server nicht einfach durchsuchen und bearbeiten zu können. NWRead ist nicht gut genug.
  • Die Verrücktheit der Konsole ist auf die allgemeinen Terminalprobleme zurückzuführen, die Linux zu plagen scheinen. Normalerweise verwende ich PuTTY , um eine Verbindung zu meiner Linux-Box herzustellen (unter Ubuntu), und aus irgendeinem Grund werden die Pfeiltasten im Einfügemodus (und den Problemen mit der gesamten Farbunterstützung) A / B / C / D zugeordnet. In gVim kann die Strg-Registerkarte einfach "bn" zugeordnet werden, jedoch nicht im Konsolenmodus. Solche Probleme treten häufig auf.
  • Die Such- / Ersetzungsoptionen sind in Bezug auf die Benutzeroberfläche sehr schwach. Das Ganze in eine einzige Zeile eingeben zu müssen, ist einfach nicht gut genug. Ich bin der Meinung, dass der viel ausgefeiltere Dialog in "UltraEdit" mir am Ende viel mehr Macht verleiht, auch wenn die tatsächliche Unterstützung für reguläre Ausdrücke möglicherweise viel schwächer ist.
  • Zu starkes Vertrauen in US-Tastaturlayouts. Viele Tasten, die für primäre Funktionen verwendet werden, wie z. B. `, werden auf meinem dänischen Tastaturlayout nicht gedruckt (und befinden sich umständlich, genau wie $ und viele andere). Es ist ziemlich umständlich, einige Funktionen zu verwenden.
Svend
quelle
Installieren Sie für Problem Nr. 2 "vim" oder "vim-full", um dies zu beseitigen.
Adam Plumb
Das Problem liegt leider anderswo. Sie können sich hier einige vorgeschlagene Korrekturen ansehen. Vim.wikia.com/wiki/… Aber leider hat keine davon für mich geklappt .
Svend
Zu Nummer 3 verwenden Sie Strg-F nach:, um ein voll funktionsfähiges Bearbeitungsfenster für Ihre: s-Befehle usw. zu erhalten.
ErichBSchulz
greplace ist eine Lösung für # 3. Es gibt andere grep-Plugins, aber es ist alles, was ich brauche. Erleichtert das Finden / Ersetzen einfacher als in jedem anderen von mir verwendeten IDE- oder Texteditor.
Domi91c
2

Remotedesktop zeigt schnell nur native Windows-Anwendung. Wir haben versucht, Eclipse für die Entwicklung unter Unix zu verwenden. Und weisst du was? Es war nicht einmal möglich.

Der zweite Grund ist, dass wir unsere Vims und Emacs erweitern könnten, um alle projektspezifischen Aufgaben des DB-Browsings auf besondere Weise zu erledigen, um unsere eigene Metasprache hervorzuheben und automatisch zu vervollständigen.

Mykola Golubyev
quelle
2

Ich würde sagen, einer der großen Vorteile ist die Erweiterbarkeit des VIM-Editors. Wenn ich möchte, dass etwas mit CVS funktioniert, kann ich das CVSMenu-Plugin verwenden und es meinem Editor hinzufügen, um diese Funktionalität zu erhalten.

Gleiches gilt für die Hervorhebung der Syntax, das Verhalten mit bestimmten Dateien usw. Alle möglichen Dinge können in vim angepasst werden.

Ich bin mir nicht sicher, ob Sie dies in GUI-Editoren so einfach tun können.

Rob Wells
quelle
1

Das Aufnehmen und Wiedergeben in VIM ist unschlagbar beeindruckend, was in GUI-basierten Tools sehr unwahrscheinlich ist.

Durch das automatische Inkrementieren / Dekrementieren können Daten generiert werden, ohne dass Programme dafür geschrieben werden müssen.

Peeyush
quelle
1

Ich war jahrelang ein verzweifelter Emacs-Benutzer. Aber nie wirklich darauf gekommen. Dann fing ich an, Clojure (mein erstes Lisp) zu lernen und entdeckte ParEdit.

Und das hat mich umgehauen.

(Einige Beispiele finden Sie hier: https://www.youtube.com/watch?v=D6h5dFyyUX0 )

Lisp + ParEdit ist das erstaunlichste Bearbeitungserlebnis, das ich je hatte. Sonst kommt nichts in die Nähe. Lisp ist keine unangenehme Sprache mehr zum Schreiben, was mich dazu zwingt, mir Sorgen zu machen, viele irritierende dumme Klammern auszugleichen. Mit ParEdit wird die konsistente Lisp-Struktur zu einem großen Bonus für die Arbeit, da dieselben Baumtransformationen - Schlürfen, Barfing, Teilen und Verbinden - überall funktionieren, sowohl in Kontrollstrukturen als auch in Datenstrukturen. Und ParEdit hindert mich daran, dumme Fehler zu machen. Es wird fast unmöglich, Syntaxfehler zu machen.

Und im Gegensatz zu Eclipse ist dies keine mühsame Echtzeitprüfung, die immer im Hintergrund ausgeführt wird und meinen Prozessor verbrennt. Es kostet nichts ... ParEdit nimmt einfach den richtigen Strukturwandel vor, wenn ich danach frage.

(Im Allgemeinen ist Emacs so schnell wie es sein muss. Im Gegensatz zu Eclipse, bei dem Kleber eingegeben wird.)

Das nächste, was ich entdeckte, war Yasnippet ( http://emacswiki.org/emacs/Yasnippet ). Noch einmal, ich hatte so etwas noch nie benutzt. Nicht nur ein Makro zum Hinzufügen von Boilerplate, sondern ein dynamisches, navigierbares Formular.

Das letzte Vergnügen ist die Erkenntnis, dass ich die Macht von Lisp selbst haben kann, wenn ich dieses Ding selbst erweitern möchte, um mehr von diesen hochqualitativen Produktivitätswerkzeugen zu haben.

Interstar
quelle
1

(Mein Hintergrund sind einige Jahre bei Visual Studio und anderen IDEs, dann 15 Jahre bei Vim und die letzten 6 Monate bei Emacs.)

Langlebigkeit - Vim / Emacs sind FOSS und gibt es schon seit Jahrzehnten. Ihre Nutzung wird nicht abnehmen, und ihre Funktionen werden auch nicht viel kaputt gehen / verschwinden / sich ändern. Sie können sich also darauf verlassen, dass Sie Ihren gesamten Kern der Karriere-Toolbox auf die Beherrschung nur eines Editors aufbauen.

Remote- / allgegenwärtiger Zugriff in Terminals - Obwohl beide über gute Systeme zum Bearbeiten von Remote-Dateien verfügen, können Sie diese auch auf jedem System installieren, bei dem Sie sich jemals angemeldet haben.

REPL-gesteuerte Entwicklung - Beide haben "SLIME" -Modi in verschiedenen Formen, die jede Art von REPL integrieren, mit der Sie arbeiten. Ich bin beispielsweise noch nie auf eine so leistungsstarke iterative Entwicklung gestoßen wie die von CIDER .

Flusen - Unabhängig von der verwendeten Sprache sind wahrscheinlich einige Flusenwerkzeuge vorhanden , unabhängig davon, ob sie in den Compiler oder in ein externes Werkzeug integriert sind. Diese lassen sich nahtlos in Emacs / Vim integrieren und zeigen Ihre Codierungsfehler nahezu in Echtzeit an.

Grammatik mnemonischer Befehle - Obwohl das Erlernen beider Befehle einige Zeit in Anspruch nimmt, verfügen diese Editoren über bekanntermaßen clevere Systeme, mit denen Sie mit wenigen Tastenanschlägen und Tastenkombinationen auf Tausende von Befehlen zugreifen und sich diese sogar merken können. Diese können die Verwendung einer Maus vollständig eliminieren, wenn Sie dazu neigen.

Integrierte Hilfesysteme - Die in diese Editoren integrierte Offline-Dokumentation vieler Sprachen und ihrer APIs ist auf ähnliche einfache Weise zugänglich wie die umfangreichen und umfassenden Hilfesysteme, über die sie verfügen. Für die meisten gängigen Sprachen wurde die automatische Vervollständigung hinzugefügt. Darüber hinaus gibt es eine Fülle von Diskussionshilfen zu praktisch jedem Hilfethema.

Navigation - Tags, Paredit-Likes, Markierungen, Fenster, Tabs, Vim-Rails- Jumping und viele weitere integrierte Funktionen.

Paketmanager / Repositories - Emacs hat einige (Elpa, Melpa, Marmelade) und Vims sind auch gut (Vundle, Pathogen usw. ). Ich kenne keine Communitys rund um IDEs, die etwas Vergleichbares anbieten. Ich sehe mehr als 5.000 Pakete mit package-list-packages.

Über die reine Bearbeitung hinaus - Emacs bietet hier die Möglichkeit, Nachrichten zu lesen, im Internet zu surfen, E-Mails zu verwalten, Tabellen zu bearbeiten, Präsentationen zu erstellen und alles zu organisieren.

Alles andere integriert - Debugger, Browsersynchronisierung, Kompilieren, Shells, Testlauf.

Unendlich anpassbar - Elisp ist eine sehr leistungsfähige Sprache zum Erweitern / Ändern von Emacs. VimL ist das Äquivalent von Vim. Zu beiden sind Bücher geschrieben. Optimieren Sie Farbthemen und Verhaltensweisen zu Ihrer Freude!

Micah Elliott
quelle
0

Ein Vorteil aller konsolenbasierten Editoren gegenüber GUI-Editoren besteht darin, dass sie in einem Terminal-Multiplexer wie screen oder tmux ausgeführt werden können . Warum ist das gut?

  • Es ist schneller, von einer Terminal-Multiplexer-Konsole zu einer anderen zu wechseln, als mit der Maus oder sogar mit der Alt-Tab-Taste von einer GUI-Konsole zu einer anderen zu wechseln. Dies liegt daran, dass Konsolen benannt und durch Eingabe einiger Zeichen des Namens umgeschaltet werden können.
  • Wenn sich Ihre Editorsitzungen in den Konsolen eines Terminal-Multiplexers befinden, können Sie von jedem Computer aus darauf zugreifen. Wenn ich von zu Hause aus arbeiten muss, kann ich in meine Box ssh, den bereits laufenden Terminal-Multiplexer an meine ssh-Sitzung anschließen und genau dort sein, wo ich aufgehört habe, als ich die Arbeit verlassen habe.
Wayne Conrad
quelle
0

Da vim / emacs seit 2003 häufig von Programmierern und als C # -Benutzer verwendet werden, ist es aus dieser Sicht fair, diesen ansonsten unfairen Vergleich durchzuführen (ein anderer könnte VS C ++ mit Visual Assist X gegen C ++ in vim / emacs sein):

Für C # und Visual Studio:

  1. Ich habe gerade die Anzahl der Tastenanschläge für diese Zeile gezählt:

        public List<string> Names = new List<string>();
    //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
    //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
    // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
  2. Ich habe über die Emacs-Funktion zum Einspringen in den Code gelesen. Ich denke nicht, dass es genau so eine Funktion hat. Es hat jedoch eine ähnliche Funktion. Hier ist der Nachteil von VS. Es gibt viele kleine Funktionen, aber im Laufe der Zeit funktionieren sie nicht mehr. Zuletzt habe ich überprüft, dass die Sprungfunktion nicht funktioniert hat, aber das war vor ein paar Jahren. VS hat eine neue grafische Sprungfunktion eingeführt, die ich stattdessen verwendet habe. Es erfordert Maus oder Berührung.

  3. Hier gewinnen emacs / vi. Wenn Sie im Code viel herumspringen müssen, sind die VS-Funktionen dafür entweder nicht vorhanden oder wurden nicht ausreichend getestet.

Das Problem bei der mausbasierten GUI-Navigation ist das folgende

a) Genau wie das Sitzen in einer sehr statischen Position ist es vielleicht schlecht. Wenn ja, neigen Mäuse dazu, Ihre Finger auch in einer statischen Position zu halten. Meine Schmerzen am Handgelenk verschwanden mit dem Wechsel zum Trackball. Ich habe zuerst eine vertikale Maus ausprobiert, aber sie hat nichts für das Problem getan.

b) Meine ideale Tastatur hätte 2 Reihen von Funktionstasten, kein Nummernblock, so dass ich den Trackball näher platzieren könnte, was die Sprungdistanz erträglicher macht.

Wenn Sie jedoch zwischen wenigen bestimmten Stellen springen möchten, ist klar, dass der "Markierungsring" effektiver ist. VS hat etwas in diese Richtung ... zuletzt habe ich es benutzt, es hat einfach nicht zuverlässig funktioniert ...

c) und es gibt wahrscheinlich eine Menge kleiner Funktionen, die mit jeder Veröffentlichung brechen, so dass dies der Nachteil von VS ist.

Lösung für dieses "Closed Source" -Problem: Schreiben Sie den gesamten VS in C # und erlauben Sie dann das Modden / Bearbeiten des kompilierten Codes (zur Laufzeit Speichern von Änderungen als Patch, der beim nächsten Start optional geladen wird), ohne die Quelle freizugeben. Dies kann erreicht werden, indem der Dekompiler den Code so ausgibt, wie er war, als er hineinging. 180 Grad von der Funktionsweise nativer Compiler entfernt. Die Binärdatei wird dann zum Quellcode und zur ausführbaren Datei, stattdessen zu diesem Durcheinander von CS- und EXE-Dateien usw. Es gibt Tools von Drittanbietern, die dies fast bereits können. Daher ist das "Modden" von C # -Exes eher trivial, aber ich schlage vor, dies zu übernehmen Die logische Schlussfolgerung: Fügen Sie sogar Kommentare in die EXE- und DLL-Datei ein. Die Dateien werden im Vergleich zu kompilierten C / C ++ - Apps immer noch winzig sein. Optimierung? Sie können auch voroptimierten Code einfügen. Wenn der Modder die Exe modifiziert, während die App ausgeführt wird, werden der nicht modifizierte "AST" und die zugehörige optimierte Binärdatei wieder eingesteckt. Dieselbe Idee wie im C # -Compiler, jedoch weiterentwickelt. Nächster Schritt: Schreiben Sie das gesamte Betriebssystem in dieser Sprache, damit Windows auch bei geschlossener Quelle trivial modifiziert werden kann, da der Quellcode mit jeder Binärdatei geliefert wird. Kein Einrichten von Umgebungen, Kompilieren, Verknüpfen. Ändern Sie einfach das Betriebssystem, während es ausgeführt wird. Enge Analogie: Wenn Sie einen Webbrowser in Common Lisp geschrieben haben, können Sie den Webbrowser bearbeiten, ohne ihn anzuhalten, und Webseiten in derselben Sprache wie der Browser erstellen. Es kann trivial modifiziert werden, da der Quellcode mit jeder Binärdatei geliefert wird. Kein Einrichten von Umgebungen, Kompilieren, Verknüpfen. Ändern Sie einfach das Betriebssystem, während es ausgeführt wird. Enge Analogie: Wenn Sie einen Webbrowser in Common Lisp geschrieben haben, können Sie den Webbrowser bearbeiten, ohne ihn anzuhalten, und Webseiten in derselben Sprache wie der Browser erstellen. Es kann trivial modifiziert werden, da der Quellcode mit jeder Binärdatei geliefert wird. Kein Einrichten von Umgebungen, Kompilieren, Verknüpfen. Ändern Sie einfach das Betriebssystem, während es ausgeführt wird. Enge Analogie: Wenn Sie einen Webbrowser in Common Lisp geschrieben haben, können Sie den Webbrowser bearbeiten, ohne ihn anzuhalten, und Webseiten in derselben Sprache wie der Browser erstellen.

Anonymer Feigling
quelle