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 auf ) und nachdem Sie sich ein wenig unter Unix & Linux SE umgesehen haben, haben Sie festgestellt, dass vi verwendet wird statt „vim“ in einer ganzen Reihe von Fragen. Ich weiß, dass „vim“ für „Vi IMproved“ steht, und frage mich daher, warum jemand lieber vi als vim verwenden würde. Hat vi einen signifikanten Vorteil gegenüber vim?

Bearbeiten: 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.

Kommentare

  • Das Schöne an vi ist, dass Sie erwarten können, dass es auf jedem POSIX-kompatiblen System verfügbar ist.
  • Tatsächlich enthält die Ubuntu-Standardinstallation vi und nicht vim .. Ubuntu ist übrigens eine der benutzerfreundlichsten Distributionen 😉
  • @amyassin This ist falsch, Ubuntu enthält, wie die meisten Linux-Distributionen, vim. vi ist nur ein symbolischer Link, der in der Standardinstallation auf vim verweist.
  • Mein Rat lautet: Verwenden Vim, aber lernen Sie vi mit den POSIX-Spezifikationen für vi . Auf diese Weise verfügen Sie über portables Wissen sowie über Kenntnisse über Vim-Erweiterungen.
  • @DDK Sie haben “ schließlich in meiner Erklärung. “ ls -l / etc / alternatives / vi “ – > “ lrwxrwxrwx 1 root root 17 janv. 1 2016 / etc / alternatives / vi – > /usr/bin/vim.tiny“

Antwort

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

Während viele traditionelle Unix-kompatible Betriebssysteme vi bereitstellen Bei Implementierungen, 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 entworfen um den Bearbeitungsprozess zu vereinfachen und nützliche Features und Funktionen bereitzustellen. 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 und eine andere Implementierung verwenden, einschließlich derjenigen, die auf dem ursprünglichen BSD basieren Code kann sehr frustrierend sein. Das Gegenteil ist auch der Fall.

Dies ähnelt dem Problem, das bei Skripten auftritt, die Nicht-POSIX-Bashismen verwenden, die orthodoxeren Shell-Implementierungen wie dash oder ksh.

Antwort

Kein vi hat nicht Jeder signifikante Vorteil gegenüber Vim ist eher umgekehrt. Vim hat mehr Vorteile als Vi. Sie könnten interessiert sein an: Warum, oh WARUM, machen Sie diese #? @! Nutheads verwenden vi?

Bearbeiten Sie auch: Lohnt sich das Erlernen von VIM?

Kommentare

  • Ja. Ich ‚ verwende keine IDE, da die Editoren, zu deren Verwendung Sie gezwungen werden, nicht ‚ t Vim.
  • @Keith Ich verwende sowohl Xcode als auch Eclipse und ‚ kann immer noch nur mit vi bearbeiten.
  • @Keith SlickEdit hat eine großartige Vim-Emulation und IDEA ‚ s kommt dem nahe. Außerdem verfügt Visual Studio über ViEmu.
  • IntellIJ verfügt außerdem über ein nettes vim-Plugin, das das Verhalten des Standardeditors ‚ überschreibt.

Antwort

Nachdem ich einen großen Teil meines Lebens (ohne Kindheit) mit Vim verbracht hatte, 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. Wenn ich vor meiner Reise mit vi einen Text ersetzen oder einen ähnlichen Vorgang in einer großen Gruppe von Dateien ausführen musste, öffnete ich einfach die Dateien in Vim und führte den Befehl :bufdo aus und wann immer ich einige Dateien einrücken oder formatieren musste, öffnete ich sie in Vim und verwendete die Befehle = und gw von Vim 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 arbeite, auf dem Vim nicht vorhanden ist, fühle ich mich mit vi viel wohler als vor meinem einmonatigen Ausflug.

Außerdem habe ich im letzten Monat Linux installiert ein billiges WM8650-Tablet und stellte fest, dass es einen merklichen Leistungsunterschied zwischen Vim und vi gibt, daher verwende ich eher vi auf dem Tablet.

Kommentare

  • Ich finde, dass dies ein häufiges Problem in der IT ist – die Tools, die uns helfen, können auch Dinge verschleiern, die wir ‚ besser lernen sollten.
  • Eigentlich Handhabung Die direkte Bearbeitung von Dateien in vielen Dateien kann ‚ nicht portabel mit Awk oder Sed entweder durchgeführt werden. (Die -i beide einschalten ist eine GNU-Erweiterung.) Sie können sie jedoch portabel mit etwas wie for f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done

Answer

Ich würde es schwer haben, ohne vim zu leben, aber ich kann vi nicht ausstehen . Wenn Sie jedoch das erstere lernen, erhalten Sie zumindest eine Vorstellung davon, wie Sie mit dem späteren umgehen sollen, wenn das alles ist, was verfügbar ist.

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

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 grundlegend auch); „nocp“ deaktiviert die vi-Kompatibilität und dies beginnt, vim von ye olde vi zu unterscheiden (z , es aktiviert showmode, was die gesamte Erfahrung etwas menschlicher macht, da Sie jetzt eine Ahnung haben, ob Sie sich im Befehls- oder ~ INSERT ~ -Modus befinden. „wildmenu“ gibt Ihnen nur eine horizontales Abschlussmenü, wenn Sie einige Dinge tun, was auch das Leben erleichtert.

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

Kommentare

  • Ich füge immer auch set mouse=a hinzu.
  • Bezüglich Ihrer Programmierung Kommentar, vielleicht finden Sie eclim interessant …
  • @ire_and_curses: port ‚ t Ich habe es versucht. Eclipse und vim überwachen beide die Quelldateien und ermöglichen deren externe Aktualisierung. Wenn Sie von einem Desktop auf einen anderen wechseln, wechseln Sie von einem Desktop auf einen anderen. Scheint ziemlich die Idee zu sein.
  • Obwohl ich ‚ nicht denke, dass diese Antwort die gewählte Antwort sein sollte (da sie ‚ ist voreingenommen), ‚ ist genau die Art von Perspektive, die zum Verständnis der Unterschiede hilfreich ist. Vielen Dank, dass Sie eine Position bezogen haben.

Antwort

Der Vorteil ist, dass vi normalerweise in Enterprise UNIX wie AIX oder vorinstalliert ist Solaris. Außerdem ist vim auf Installationsmedien nicht verfügbar.

Antwort

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 getan werden? “

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 ein:

$ 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-Meister. „Es spielt keine Rolle.“

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

Kommentare

  • hahah … es ist lustig für mich … tief aber lustig.Vielen Dank für die Freigabe.

Antwort

Wie bereits in früheren Antworten erwähnt, wird vi mit nahezu jedem UNIX-System geliefert da draußen.

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

Dies ist kein Vorteil für vi per se , weil Sie vim einfach manuell installieren können und in der Installation, die einen Texteditor erfordert, nur wenig zu tun ist, und nichts, bei dem vim vi für den beabsichtigten Zweck überlegen ist. Aber den Unterschied und das vi verstehen ist allgegenwärtiger und leichter als vim und bietet einige Nischenvorteile.

Um nur umfassend zu sein, hat noch niemand ausdrücklich darauf hingewiesen, dass vi ein direkter Vorläufer von vim ist. Vim wurde speziell als alles konzipiert das vi war und mehr.

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

Antwort

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

Es gibt viele, viele Gründe dafür vim steht fo r „vi verbessert“!

Aus einem verwandten Beitrag entlehnt antwortete ich: –

  1. Mehrere Fenster – horizontal, vertikal & 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 das verrückte Umschalten des alten vi rückgängig zu machen.
  6. Befehlszeilenverlauf, Suchverlauf.
  7. Eine ganze Sprache, die zusammen mit einer Vielzahl von eingebettet ist verfügbare Funktionen, z. B. getcwd ()
  8. Stark erweiterter Mustervergleich.
  9. Wortvervollständigung über Strg-P & Strg-N.
  10. Ein eingebauter Datei-Navigator (ein wenig klobig, kann aber nützlich sein).
  11. Die ESC-Taste beendet tatsächlich Befehle, denen Sie entkommen wollten, anstatt sie (wahnsinnig) auszuführen wie vi.
  12. Möglichkeit, Befehle für alle Puffer, Argumente oder Fenster über bufdo, argdo & windo auszuführen.

Kommentare

  • Sie hätten wahrscheinlich die “ viele, viele “ Gründe, die Sie in unix.stackexchange.com/a/425597/85039 hier antworten. Das ‚ würde diese Antwort ein wenig verbessern; Andernfalls liest es sich eher wie ein Kommentar als wie eine tatsächliche Antwort.
  • Punkt genommen. Antwort aktualisiert, entlehnt von einer verwandten Antwort, die ich gestern gegeben habe.

Antwort

Ich habe bemerkt, dass ich nur wählen Sie Vi über VIM wenn Ich kopiere und füge ein Textdokument oder eine Konfigurationsdatei ein, die ich mit dem Befehl cat verwendet habe. Dies liegt daran, dass wenn ich versuche, ctrl-c und dann ctrl-v in das VIM geöffnete Dokument zu wechseln. Es zwingt alle Zeilen, einen Kommentar vor sich zu haben. Wenn ich also Vi für ctrl-v oder paste in geöffnetes Dokument, es fügt genau das ein, von dem ich kopiert habe. Ansonsten verwende ich den ganzen Tag VIM.

Viel Spaß!

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.