Vim im Ex-Modus ist nützlich, wenn:
- Sie müssen (mehrere) Dateien nicht interaktiv (als Teil des Skripts) bearbeiten.
- Ihre Verbindung ist sehr langsam oder der Bildschirm wird nach Ihren Aktionen nicht aktualisiert.
- Zuordnungen und Abkürzungen sind deaktiviert.
- Allgemeine Schlüssel wie Escapeoder Controlfunktionieren nicht richtig.
Grundsätzlich vi
ist der visuelle Modus für den ex
Vim Ex-Modus nur eine Emulation ex
(sie führen immer noch den gleichen Code aus), so dass es möglich ist, ex
von vi aus in den Befehlsmodus zu gelangen und umgekehrt. Tatsächlich gibt es zwei Modi: Ex-Modus ( vim -e
) und verbesserter Ex-Modus, der erweiterte Befehle als der vi-kompatible Ex-Modus ( vim -E
) ermöglicht. Siehe: Was ist der Unterschied zwischen dem Ex-Modus und dem verbesserten Ex-Modus?
Ex ist die Wurzel aus einer Familie von Redaktion: edit
, ex
und vi
. Ex ist ein Super-Set von ed
, wobei die bemerkenswerteste Erweiterung eine Anzeigebearbeitungsfunktion ist. ex (1)
Bearbeiten von Dateien nicht interaktiv ist die am weitesten verbreitete Anwendung und die Menschen es in ähnlicher Weise verwenden , wie sed
und awk
aber sind sie mehr Strom ausgerichtet sind - sie die Datei nur darauf , von Anfang an lesen zu beenden (sie sind nicht mit mehreren Linien zu arbeiten entworfen ) while vim
ist pufferorientiert - Sie können sich in der Datei vorwärts und rückwärts bewegen, wie Sie möchten, was sie so leistungsfähig macht.
Grundsätzlich gilt:
sed
ist ein S tream ED itor, kein Datei-Editor.
Trotzdem scheinen die Leute es zu missbrauchen, weil sie versuchen, Dateien zu bearbeiten, und die Wahrheit ist, dass es keine Dateien bearbeitet. Zweitens handelt es sich bei den Optionen wie in-place ( -i
) um nicht standardmäßige FreeBSD-Erweiterungen, die unter anderen Betriebssystemen möglicherweise nicht verfügbar sind. Wenn Sie also nicht portierbaren Code, I / O-Overhead und unerwünschte Nebeneffekte (z. B. das Zerstören von Symlinks) vermeiden möchten, sollten Sie ex
den standardmäßigen befehlsbasierten UNIX-Editor (zusammen mit BashFAQed
) verwenden .
Andere Dinge, die ich im Ex - Modus nützlich finde, sind, sie als Spielwiese (ähnlich wie eine python
Konsole) zu verwenden, auf der Sie viele Befehle hintereinander ausführen, reguläre Ausdrücke bearbeiten / debuggen, die vim - Konfiguration überprüfen, externe Befehle ausführen oder mit Registern arbeiten können usw .
Zum Beispiel:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
Das ist im Ex-Modus einfacher als im normalen Modus (wo Sie nur Ihren letzten Befehl sehen können).
Praktische Verwendungen
Ich habe die folgenden Aliase in meinem .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Hinweis: Die Verwendung von bufdo
ist nicht ex
POSIX-konform (wie im Handbuch beschrieben ). Sie können sie also find
stattdessen mit verwenden. Das !
wird verwendet, um das Umschalten der Puffer ohne Speichern zu erzwingen (andernfalls wird eine Warnung generiert).
Das erste, mit dem ich die nachgestellten Leerzeichen in all meinen Quelldateien abschneide, zB:
trim **/*.php
Der zweite konvertiert alle Tabulatoren in Leerzeichen (rekursiv), zB:
retab **/*.php
Für mich ist das Verwenden retab
ausreichend, aber es gibt einige Nachteile, die hier beschrieben werden . Fügen Sie Extra -V
für erhöhte Ausführlichkeitsausgabe hinzu.
Beachten Sie, dass obigen Beispiele mit zsh / bash4 Globbing ( **
), so stellen Sie sicher , dass Ihre Shell unterstützt und es aktiviert ist .
Weitere praktische Beispiele (wie das Parsen von HTML-Dateien) finden Sie unter:
Weitere Informationen zum Ex-Modus finden Sie auch unter:
Q
undq:
sind ganz anders. Sie beziehen sich nur aufQ
richtig?