Im Tutorial wird erwähnt, dass der Ex-Modus für die Stapelverarbeitung vorgesehen ist. Da es für mich eher ein Ärgernis als ein Werkzeug ist, möchte ich einige praktische Beispiele sehen. Wer benutzt es? Warum?
Wofür ist der EX-Modus für die Stapelverarbeitung?
Antworten:
Vim im Ex-Modus (auch bekannt als
ex
) ist nützlich, wenn:Bearbeiten von Dateien nicht interaktiv ist die am weitesten verbreitete Anwendung und die Menschen es in ähnlicher Weise unter Verwendung von wie
sed
undawk
werden jedoch sind sie mehr orientieren Stream - sie die Datei nur von Anfang bis Ende nach vorn lesen , während desvim
Puffer ausgerichtet ist - Sie vorwärts und rückwärts bewegen können in der Datei, wie Sie möchten. Zweitens sind die regulären Ausdrücke von vim mächtiger als die Ausdrücke von awk und sed (sie funktionieren nicht mit mehreren Zeilen) - zum Beispiel kann vim über mehrere Zeilen hinweg übereinstimmen und unterstützt keine Übereinstimmungen.Ex ist auch ein Editor (direkter Vorgänger von vi) und emuliert im Vim-Ex-Modus
ex
(sie führen immer noch denselben Code aus), sodass es möglich ist,ex
aus vi heraus in den Befehlsmodus zu gelangen und umgekehrt. Es gibt den Ex-Modus (vim -e
) und den verbesserten 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?Beispiel 1
Hier ist einfaches Beispiel für Wechsel
127
zu128
Ihrerhosts
Datei und drucken Sie die Ausgabe:ist äquivalent zu:
Für eine erweiterte Lösung verfügen Sie möglicherweise über eine Datei mit vim-Befehlen, die Sie mit einem klassischeren Ansatz für die E / A-Umleitung verwenden können:
Beispiel 2
Sie können auch vim-Plug-ins verwenden, um einige Aufgaben auszuführen.
Der folgende Einzeiler konvertiert beispielsweise Ihre Quellcodedatei mit einem der Standard-Plugins in HTML:
Es generiert eine HTML-Datei (mit Hervorhebung der Syntax) aus Ihrem Code (in einer beliebigen unterstützten Sprache), die zum Drucken oder zum Veröffentlichen auf Ihrer Website bereit ist.
Beispiel 3
Oder ein echtes Live-Beispiel aus der RPM- Spezifikation:
Beispiel 4
Das folgende Skript erstellt eine neue HTML-Datei, indem es die HTML-Datei der Beispielsite herunterlädt und ihren Text durch eine automatisch generierte 20x20-Tabelle mit Zufallszahlen ersetzt:
Verwendung:
Mehr Beispiele:
Siehe auch:
quelle
Der Ex-Modus dient hauptsächlich zum Ausführen der gleichen Aktion für eine Reihe von Dateien.
Angenommen, Sie haben 25 .html-Dateien, alle mit:
Anstatt jeden einzelnen davon zu öffnen, können Sie den Ex-Modus verwenden, um alles zu ändern in
index.html
:quelle
for file in *.html; do vim -es -c '%s/home\.html/index.html/g' -c wq "$file"; done
.Ab Version 7.3 sind der Ex-Modus und andere Formen der VIM-Stapelverarbeitung als permanente Unterstützung für das Rückgängigmachen anderen Nicht-VIM-Methoden überlegen, da die Rückgängigmachungshistorie nicht beeinträchtigt wird.
Hinzufügen: Wenn diese Option aktiviert ist, werden alle Änderungen an einer Datei (bis zu einem bestimmten Grenzwert) im Rückgängig-Verlauf über vim-Editiersitzungen hinweg beibehalten. Wenn die Datei von einem externen Programm bearbeitet wird, setzt vim den Rückgängig-Verlauf zurück, wenn durch eine Prüfsumme festgestellt wird, dass er geändert wurde. Mit vim -E können Sie eine Datei stapelweise bearbeiten, und die Bearbeitung wird im Rückgängig-Verlauf gespeichert.
quelle
Dies beantwortet nicht Ihre Frage zur Stapelverarbeitung, ist jedoch eine weitere Möglichkeit, den Ex-Modus zu erläutern. Sie wissen, wie Sie drücken
:
in den Befehlszeilenmodus wechseln und Befehle eingeben? Im Ex-Modus können Sie auch dieselben Befehle eingeben, außer dass Vim den Ex-Modus nach Eingabe eines Befehls nicht verlässt, sondern im Ex-Modus bleibt und Sie einen anderen Befehl eingeben können. Es ist also eine Art REPL (Lesen, Auswerten, Drucken, Schleifen), aber ohne den Ausdruck (also nur ein REL ...). Ich werde später darauf zurückkommen, warum Sie diese Art von REL möchten. Das ist der Grund, warum es Ex-Modus heißt. Hier können Sie Ex-Befehle eingeben, genau wie im Befehlszeilenmodus. Hier können Sie einen Ex-Befehl eingeben. Eine andere Möglichkeit, dies zu erklären, besteht darin, dass Sie Vimscript / VimL-Code eingeben und sofort ausführen können. Vimscript / VimL ist eine Sprache, in der Sie Vim-Plugins schreiben können. Es ist auch die Sprache, in der Sie Ihre Konfigurationsdatei (möglicherweise .vimrc) schreiben. Dies ist auch die Sprache, die Sie verwenden, wenn Sie Ex-Befehle im Befehlszeilenmodus oder im Ex-Modus eingeben. Aus dieser Perspektive kann der Ex-Modus als VimL REL angesehen werden. Warum möchtest du ein VimL REL? Aus dem gleichen Grund mögen Leute REPLs für andere Sprachen. Sie können wirklich hilfreich sein, um Code zu debuggen oder mit der Sprache zu experimentieren, um zu sehen, wie die Dinge funktionieren, insbesondere wenn Sie Plugins in VimL schreiben oder Ihre Konfigurationsdatei stark anpassen (was wahrscheinlich bedeuten würde, dass Sie das SRP-Prinzip verletzen und es aufteilen sollten) Plugins).quelle
:!python
usw. verwenden kann