Vim im Ex-Modus (auch bekannt als ex
) 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.
Bearbeiten von Dateien nicht interaktiv ist die am weitesten verbreitete Anwendung und die Menschen es in ähnlicher Weise unter Verwendung von wie sed
und awk
werden jedoch sind sie mehr orientieren Stream - sie die Datei nur von Anfang bis Ende nach vorn lesen , während des vim
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?
Ex ist die Wurzel einer Redaktionsfamilie: edit, ex und vi. Ex ist ein Super-Set von ed, wobei die bemerkenswerteste Erweiterung eine Anzeigebearbeitungsfunktion ist. ex (1)
Beispiel 1
Hier ist einfaches Beispiel für Wechsel 127
zu 128
Ihrer hosts
Datei und drucken Sie die Ausgabe:
ex -s +%s/127/128/g +%p +q! /etc/hosts
ist äquivalent zu:
sed s/127/128/g /etc/hosts
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:
echo :%s/127/128/g > cmds.vim
echo :%print >> cmds.vim
echo :%quit! >> cmds.vim
ex -s /etc/hosts < cmds.vim # The same as: vim -s cmds.vim /etc/hosts
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:
ex -s '+let g:html_no_progress=1' '+syntax on' '+set ft=c' '+runtime syntax/2html.vim' -cwqa my_code.c
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:
vim -E -s Makefile <<-EOF
:%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/
:%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/
:%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/
:update
:quit
EOF
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:
" table.vim
%!curl -s example.com
let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',20).'</tr>',20).'</table>'
/<body
norm!vitd"tP
%s/_/\=system('echo $RANDOM')/g
wq
Verwendung:
ex -s table.html < table.vim
Dies funktioniert auf * nix-ähnlichen Systemen, auf denen curl installiert ist. Hinzufügen -V
, um das Skript in Aktion zu sehen.
Mehr Beispiele:
Siehe auch: