it-swarm.com.de

Vi vs vim, oder gibt es einen Grund, warum ich jemals vi verwenden möchte?

Ich kenne mich mit * NIX-Texteditoren aus (die derzeit von nano nach vim migrieren) und habe nach einigem Hin und Her in Unix & Linux SE festgestellt, dass vi wird in einer ganzen Reihe von Fragen anstelle von 'vim' verwendet. Ich weiß, dass 'vim' für 'Vi IMproved' steht, und frage mich vor diesem Hintergrund, warum jemand lieber vi als vim verwenden würde. Hat vi einen signifikanten Vorteil gegenüber vim?

Edit: Ich denke, dass meine Frage falsch interpretiert wird. Ich weiß, dass vim größtenteils wesentlich leistungsfähiger und funktionsreicher ist als vi. Was ich wissen möchte, ist, ob es mögliche Fälle gibt, in denen vi einen Vorteil gegenüber vim hat, wie z. B. weniger Speicherbedarf, Verbreitung auf * nix-Systemen usw.

89
fouric

vi ist (auch) ein POSIX-Standardeditor . Es gibt viele Implementierungen und vim ist wahrscheinlich die beliebteste, zumindest unter Linux.

Während viele traditionelle Unix-kompatible Betriebssysteme vi Implementierungen bereitstellen, die dem Standard sehr nahe kommen, hat vim viele zusätzliche Funktionen hinzugefügt, die es zu einem zweischneidigen Schwert machen.

Natürlich sind diese Erweiterungen normalerweise so konzipiert, dass sie den Bearbeitungsprozess vereinfachen und nützliche Features und Funktionen bieten. Wenn Sie jedoch an einige von ihnen gewöhnt sind (nicht an kosmetische wie Syntaxfarben, sondern an solche, die das Verhalten des Editors ändern), können Sie leicht vergessen, dass sie spezifisch sind. Die Verwendung einer anderen Implementierung, einschließlich derjenigen, die auf dem ursprünglichen BSD-Code basieren, kann sehr frustrierend sein. Das Gegenteil ist auch der Fall.

Dies ist dem Problem ziemlich ähnlich, das bei Skripten auftritt, die Nicht-POSIX-Bashismen verwenden, die orthodoxeren Shell-Implementierungen wie dash oder ksh ausgesetzt sind.

63
jlliagre

Kein vi hat keinen signifikanten Vorteil gegenüber vim, sondern ist umgekehrt. Vim hat mehr Vorteile als Vi. Sie könnten interessiert sein an: Warum, oh WARUM, verwenden diese #? @! Nutheads vi?

Bearbeiten lesen Sie auch: Ist Lernen VIM die Mühe wert?

29
abhixec

Nachdem ich einen großen Teil meines Lebens (ohne Kindheit) damit verbracht hatte, bequem mit Vim zu bearbeiten, verbrachte ich ungefähr einen Monat damit, nur vi zu verwenden. Dabei wurde mir klar, dass ich bei all meinen Anforderungen an Textänderungen auf Vim angewiesen war. Vor meiner Reise mit vi öffnete ich immer dann, wenn ich Text ersetzen oder einen ähnlichen Vorgang in einer großen Gruppe von Dateien ausführen musste, die Dateien in Vim und führte einen Befehl :bufdo Aus, und wann immer ich musste Einige Dateien einrücken oder formatieren, ich würde sie in Vim öffnen und die Befehle = und gw von Vim verwenden. Ich war Vim-abhängig. Nachdem ich festgestellt hatte, dass vi diese Befehle nicht hatte, musste ich Massentexttransformationen mit sed durchführen und lernte viel über andere Programme wie awk und indent. Obwohl ich am Ende wieder auf Vim umgestiegen bin, war das Wissen, das ich durch die Verwendung eines Editors mit weniger Funktionen gewonnen habe, erheblich und hat sich als äußerst nützlich erwiesen. Ich lernte nicht nur Werkzeuge außerhalb eines Texteditors kennen, sondern lernte auch vi besser kennen. Immer wenn ich an einem neuen System oder einem Server ohne Vim arbeite, fühle ich mich mit vi viel wohler als vor meinem einmonatigen Ausflug.

Außerdem habe ich letzten Monat Linux auf einem billigen WM8650-Tablet installiert und festgestellt, dass zwischen Vim und vi ein spürbarer Leistungsunterschied besteht. Daher verwende ich vi eher auf dem Tablet.

24
user26112

Es würde mir schwer fallen, ohne vim zu leben, aber ich kann vi nicht ausstehen . Wenn Sie jedoch Ersteres lernen, erhalten Sie zumindest eine Vorstellung davon, wie Sie mit Letzterem umgehen sollen, wenn dies alles ist, was verfügbar ist.

Die vim-Oberfläche ist standardmäßig ziemlich nah an vi. Wenn ich mit vim an einem System arbeite, füge ich dieses Zeug als erstes zu ~/.vimrc:

syntax enable
set nocp
set wildmenu

Es gibt eine Menge anderer Dinge, die ich bevorzuge - Nowrap und Nummerierung usw. - aber egal. "syntax enable" aktiviert nur die grundlegende Syntaxhervorhebung (etwas kräftiger: filetype plugin on ist auch grundlegend); "nocp" schaltet die vi-Kompatibilität aus und dies ist es, was anfängt, vim von ye olde vi zu unterscheiden (z. B. aktiviert es showmode, was die gesamte Erfahrung etwas menschlicher macht, seit Sie jetzt Ich habe eine Ahnung, ob Sie sich im Befehls- oder im ~ INSERT ~ -Modus befinden. "wildmenu" gibt Ihnen nur ein horizontales Abschlussmenü, wenn Sie einige Dinge tun, was auch das Leben einfacher macht.

Die Textbearbeitungsfunktionen von vim sind unübertroffen - abgesehen von Emacs habe ich noch nie eine Software gesehen oder gehört, die in die Nähe kommt. Sie sind nicht leicht zu erlernen, aber sobald Sie sie kennen, sind sie viel schneller als Mausmenüs und viel dynamischer als die einfachen Tastenmakroalternativen in Mausmenü-basierten Benutzeroberflächen. Zum Programmieren verwende ich manchmal vim neben einem IDE wie Eclipse, aber ich mache den größten Teil der Arbeit in vim.

Wenn Sie diesen Weg einschlagen, lol, schauen Sie sich die Plugins für die automatische Vervollständigung und die Tagliste an. Und hüte dich vor der dunklen Seite.

12
goldilocks

Der Vorteil ist, dass vi normalerweise in Enterprise UNIX wie AIX oder Solaris vorinstalliert ist. Außerdem ist vim auf Installationsmedien nicht zugänglich.

9
dchirikov

Dies ist ein Auszug aus Vim Koans :

Master Wq und der Unix-Master

Ein alter Unix-Master kam zu Master Wq. „Ich bin beunruhigt, Wq. Du lehrst den Weg von Vim. vi ist heilig, Vim jedoch nicht; sein Code breitet sich aus, seine Merkmale Crowd Memory; Seine Binärdateien sind riesig, sein Verhalten inkonsistent. Dies ist nicht der Weg von Unix. Ich fürchte, Sie führen Ihre Schüler in die Irre. Was kann man tun? "

Master Wq nickte. "Sie haben Recht", sagte er. „Vim ist kaputt. Lassen Sie es uns beheben. Sollen wir anfangen?"

Der alte Unix-Master stimmte zu und öffnete eine Shell. Er tippte:

$ vi vim.c

Er begann zu codieren. Master Wq sah eine Weile zu und fragte ihn dann: „Welche Implementierung von vi verwenden Sie? Nvi? Vim? Elvis? "

"Ich weiß nicht", sagte der Unix-Master. "Es ist egal."

Master Wq nickte. Der Unix-Master saß einen Moment fassungslos da und schloss sein Dokument ungerettet.

3
modlin

Wie bereits in früheren Antworten erwähnt, wird vi mit nahezu jedem UNIX-System ausgeliefert.

Ich wollte nur ein Beispiel hinzufügen. Arch Linux ist eine besonders beliebte und leichtgewichtige Distribution, die standardmäßig weder vom Installer noch von der Basis-Distribution mit vim geliefert wird, beide jedoch mit vi.

Dies ist kein Vorteil für vi per se, da Sie vim einfach manuell installieren können und Sie bei der Installation, für die ein Texteditor erforderlich ist, nur wenig tun müssen, und nichts, bei dem vim vi überlegen ist den beabsichtigten Zweck. Das Verständnis des Unterschieds und der Tatsache, dass vi allgegenwärtiger und leichter als vim ist, bietet einige Nischenvorteile.

Um nur umfassend zu sein, hat noch niemand explizit darauf hingewiesen, dass vi ein direkter Vorläufer von vim ist. Vim sollte speziell alles sein, was vi war, und mehr.

Auf sehr direkte Weise ist vim vi überlegen, weil es wurde so entworfen.

2
StatGenGeek

Der einzige Grund, vi jemals über vim zu verwenden, ist, wenn Sie keine andere Wahl haben.

Es gibt viele, viele Gründe, warum vim für "vi verbessert" steht!

Aus einem verwandten Beitrag entlehnt antwortete ich: -

  1. Mehrere Fenster - horizontal, vertikal und Registerkarten.
  2. Visuelle Hervorhebung.
  3. Online-Hilfe über den Befehl: help.
  4. Zeichnen Sie Makros in ein Register auf, das Sie dann ausführen können.
  5. Mehrmals rückgängig machen (und wiederholen), anstatt den wahnsinnigen Rückgängig-Schalter des alten vi.
  6. Befehlszeilenverlauf, Suchverlauf.
  7. Eine ganze Sprache, eingebettet in eine Vielzahl verfügbarer Funktionen, z. B. getcwd ()
  8. Sehr erweiterter Mustervergleich.
  9. Wortvervollständigung über Strg-P ​​& Strg-N.
  10. Ein eingebauter Datei-Navigator (etwas klobig, kann aber nützlich sein).
  11. Die ESC-Taste beendet tatsächlich Befehle, denen Sie entkommen wollten, anstatt sie (wahnsinnig) wie vi auszuführen.
  12. Möglichkeit, Befehle für alle Puffer, Argumente oder Fenster über bufdo, argdo & windo auszuführen.
1
Paul T

Ich habe festgestellt, dass ich nurVi anstelle von VIM wähle, wenn ich ein Textdokument oder eine Konfigurationsdatei kopiere und einfüge, die ich mit dem Befehl cat verwendet habe . Dies liegt daran, dass beim Versuch, ctrl-c Und dann ctrl-v In das geöffnete Dokument VIM zu schreiben, alle Zeilen gezwungen werden, einen Kommentar vor sich zu haben. Wenn ich also Vi für ctrl-v Oder paste in das geöffnete Dokument Vi verwende, wird genau das eingefügt, von dem ich kopiert habe. Ansonsten benutze ich den ganzen Tag VIM.

Genießen!

1
Tony-Caffe