Heim  >  Artikel  >  php教程  >  Zusammenstellung der Verwendung des vi-Befehls zum Ändern und Speichern von Dateien unter Linux

Zusammenstellung der Verwendung des vi-Befehls zum Ändern und Speichern von Dateien unter Linux

高洛峰
高洛峰Original
2016-12-12 16:27:511194Durchsuche

vi ist ein Bildschirmeditor, der von allen UNIX-Systemen bereitgestellt wird. Er bietet ein Fenstergerät, über das Dateien bearbeitet werden können. Natürlich finden Leute, die sich ein wenig mit UNIX-Systemen auskennen
, die Verwendung von vi mehr oder weniger sehr schwierig, aber vi ist der einfachste Editor, daher hoffe ich, dass die Leser ihn gut erlernen und in der UNIX-Welt verwenden können Dies wird in Zukunft reibungslos und problemlos sein, da mehrere andere Textverarbeitungsprogramme nicht zur Standardausrüstung von UNIX gehören. Möglicherweise ist auf dem Linux-Rechner einer anderen Person Joe oder Pico nicht installiert. Wenn Sie vi nicht kennen, können Sie es möglicherweise nicht tun.

Grundkonzepte von vi

Grundsätzlich kann vi in ​​drei Betriebszustände unterteilt werden, nämlich Befehlsmodus (Befehlsmodus), Einfügemodus (Einfügemodus) und Bottom-Line-Befehlsmodus (Last-Line-Modus). ),
Die Funktionen jedes Modus sind wie folgt:

1. Befehlsmodus: Steuern Sie die Bewegung des Bildschirmcursors, löschen Sie Zeichen oder Cursor, verschieben und kopieren Sie einen Abschnitt und rufen Sie den Einfügemodus auf, oder in den Modus „Letzte Zeile“ wechseln.
 2. Einfügemodus: Nur im Einfügemodus können Textdaten eingegeben werden. Drücken Sie Esc, um zum Befehlsmodus zurückzukehren.
 3. Modus „Letzte Zeile“: Speichern Sie die Datei oder verlassen Sie den Editor. Sie können auch die Bearbeitungsumgebung festlegen, z. B. nach Zeichenfolgen suchen, Zeilennummern auflisten usw.
Allerdings kann vi in ​​zwei Modi vereinfacht werden: Der Last-Line-Modus ist auch im Befehlsmodus enthalten und vi ist in den Befehls- und den Einfügemodus unterteilt.

Befehl zur Eingabe von vi
vi-Dateiname: Öffnen oder erstellen Sie eine neue Datei und platzieren Sie den Cursor am Anfang der ersten Zeile
vi +n Dateiname: Öffnen Sie die Datei und platzieren Sie den Cursor am Anfang der n-ten Zeile
vi + Dateiname: Öffnen Sie die Datei und platzieren Sie den Cursor am Anfang der letzten Zeile
vi +/Muster Dateiname: Öffnen Sie die Datei und platzieren Sie den Cursor am ersten String-Übereinstimmungsmuster
vi -r Dateiname: Beim letzten Bearbeiten mit vi ist das System abgestürzt. Dateiname wiederherstellen
vi Dateiname....Dateiname: Mehrere Dateien öffnen und nacheinander bearbeiten

Befehl „Cursor bewegen“
h: Bewegen Sie den Cursor um ein Zeichen nach links
l: Bewegen Sie den Cursor um ein Zeichen nach rechts
Leertaste: Bewegen Sie den Cursor um ein Zeichen nach rechts
Rücktaste: Bewegen Sie den Cursor um ein Zeichen nach links
k oder Strg+p: Bewegen Sie den Cursor eine Zeile nach oben.
j oder Strg+n: Bewegen Sie den Cursor eine Zeile nach unten.
Eingabetaste: Bewegen Sie den Cursor eine Zeile nach unten.
w oder W: Bewegen Sie den Cursor ein Wort nach rechts an den Wortanfang
b oder B: Bewegen Sie den Cursor ein Wort nach links an den Anfang
e oder E: Bewegen Sie den Cursor ein Wort nach rechts an das Ende des Wort
): Bewegen Sie den Cursor an das Ende des Satzes
(: Bewegen Sie den Cursor an den Anfang des Satzes
}: Bewegen Sie den Cursor an den Anfang des Absatzes
{: Bewegen Sie den Cursor an das Ende des Absatzes
nG: Bewegen Sie den Cursor an den Anfang der n-ten Zeile
n+: Bewegen Sie den Cursor um n Zeilen nach unten
n-: Bewegen Sie den Cursor um n Zeilen nach oben
n$ : Bewegen Sie den Cursor zur n-ten Zeile Ende
H: Der Cursor bewegt sich zur oberen Zeile des Bildschirms
M: Der Cursor bewegt sich zur mittleren Zeile des Bildschirms
L: Der Cursor bewegt sich zur letzten Zeile Zeile des Bildschirms
0: (beachten Sie die Zahl Null) Der Cursor bewegt sich zur aktuellen Zeile Überschrift
$: Bewegen Sie den Cursor zum Ende der aktuellen Zeile

Befehle zum Scrollen des Bildschirms
Strg+u: Einen halben Bildschirm bis zum Anfang der Datei scrollen
Strg+d: Einen halben Bildschirm bis zum Ende der Datei scrollen
Strg+f: Einen halben Bildschirm bis zum Ende der Datei scrollen
Strg+b; Scrollen Sie einen Bildschirm zum Anfang der Datei
nz: Scrollen Sie die n-te Zeile an den oberen Rand des Bildschirms. Wenn n nicht angegeben ist, scrollen Sie die aktuelle Zeile an den oberen Rand des Bildschirms Textbefehle einfügen
i: vor dem Cursor
I: am Anfang der aktuellen Zeile
a: nach dem Cursor
A: am Ende der aktuellen Zeile
o: vor dem aktuelle Zeile Öffnet eine neue Zeile unterhalb
O: Öffnet eine neue Zeile oberhalb der aktuellen Zeile
r: Ersetzt das aktuelle Zeichen
R: Ersetzt das aktuelle Zeichen und nachfolgende Zeichen, bis die ESC-Taste gedrückt wird
s: Beginnen Sie mit der aktuellen Position. Ersetzen Sie ausgehend von der Cursorposition die angegebene Anzahl von Zeichen durch den eingegebenen Text.
S: Löschen Sie die angegebene Anzahl von Zeilen und ersetzen Sie sie durch den eingegebenen Text.
ncw oder nCW: Ändern Sie die angegebene Anzahl Anzahl der Zeichen
nCC: Angegebene Anzahl von Zeilen ändern

Befehl löschen
ndw oder ndW: n-1 Zeichen beginnend am Cursor und danach löschen
do: bis zum Anfang löschen die Zeile
d$: bis zum Zeilenende löschen
ndd: die aktuelle Zeile und n-1 Zeilen danach löschen
x oder X: ein Zeichen löschen, x löscht das Zeichen nach dem Cursor und Entered Text

Such- und Ersetzungsbefehl
/pattern: Suche nach Muster vom Anfang des Cursors bis zum Ende der Datei
?pattern: Suche nach Muster vom Anfang des Cursors bis zum Anfang der Datei
n: In Wiederholen Sie den letzten Suchbefehl in die gleiche Richtung
N: Wiederholen Sie den letzten Suchbefehl in die entgegengesetzte Richtung
: s/p1/p2/g: Ersetzen Sie alle p1 in der aktuellen Zeile mit p2
: n1,n2s/ p1/p2/g: Ersetzen Sie alle p1 in den Zeilen n1 bis n2 durch p2
: g/p1/s//p2/g: Ersetzen Sie alle p1 in der Datei durch p2

Optionseinstellungen
alle: Alle Optionseinstellungen auflisten
Begriff: Terminaltyp festlegen
Ignoranz: Groß-/Kleinschreibung in der Suche ignorieren
Liste: Tabstopps anzeigen (Strg+I) und Zeilenende-Flags ( $)
Nummer: Zeigt die Zeilennummer an
Bericht: Zeigt die durch den zeilenorientierten Befehl geänderte Nummer an
terse: Zeigt eine kurze Warnmeldung an
Warnung: Wenn die aktuelle Datei beim Wechseln zu einer anderen Datei nicht gespeichert wird, wird die Meldung „KEIN Schreiben“ angezeigt.
nomagic: Erlaubt die Verwendung von Sonderzeichen ohne „“ vor dem Suchmodus.
nowrapscan: Deaktiviert vi von Suche nach Dateien An beiden Enden beginnen Sie am anderen Ende
mesg: Ermöglicht vi, Informationen anzuzeigen, die von anderen Benutzern mit write auf ihre eigenen Terminals geschrieben wurden

Letzter Zeilenbefehl
: n1, n2 co n3 : n1 Kopieren Sie den Inhalt zwischen den Zeilen n2 in die n3. Zeile
: n1,n2 m n3: Verschieben Sie den Inhalt zwischen den Zeilen n1 bis n2 in die n3. Zeile
: n1,n2 d: Löschen Sie den Inhalt zwischen den Zeilen n1 bis n2
: w: Speichern Sie die aktuelle Datei
: e Dateiname: Öffnen Sie die Datei Dateiname zum Bearbeiten
: x: Speichern Sie die aktuelle Datei und beenden Sie
: q: Beenden Sie vi
: q !: Speichern Sie die Datei nicht und beenden Sie vi
:!command: Führen Sie den Shell-Befehl aus command
: n1,n2 w!command: Verwenden Sie den Inhalt der Zeilen n1 bis n2 in der Datei als Eingabe für den Befehl And Führen Sie es aus. Wenn n1 und n2 nicht angegeben sind, bedeutet dies, dass der gesamte Dateiinhalt als Eingabe des Befehls
verwendet wird: r!command: Fügen Sie das Ausgabeergebnis des Befehls command in die aktuelle Zeile

ein Registeroperation
„?nyy: Speichern Sie den Inhalt der aktuellen Zeile und der nächsten n Zeilen im Register?, wobei ? ein Buchstabe und n eine Zahl ist
“?nyw: Speichern Sie die aktuelle und die nächste Zeile n Worte zum Register? , wobei ? ein Buchstabe ist, n eine Zahl
"?nyl: Aktuelle Zeile und die nächsten n Zeichen im Register speichern?, wobei ? ein Buchstabe ist, n eine Zahl
"?p :Entfernen registrieren? und platzieren Sie es an der Cursorposition. Hier? Es kann ein Buchstabe oder eine Zahl sein
ndd: Löschen Sie die aktuelle Zeile und n Textzeilen darunter und tragen Sie den gelöschten Inhalt in das Löschregister Nr. 1 ein.

Verwendung von VI
-------------------------------------- --- ---------------

1. Text einfügen
┌──┬────────────┐
│Befehl│Beschreibung│
├──┼───── ── ──────┤
│i  │Text vor dem aktuellen Zeichen einfügen│
├──┼────────────┤
│I  │Text einfügen Anfang der Zeile│
├─ ─┼────────────┤
│a  │Text nach dem aktuellen Zeichen hinzufügen│
├──┼──── ─ ───────┤
A ────────────┤
│O  │Fügen Sie eine Leerzeile vor der aktuellen Zeile ein │
├──┼ ─── ─────────┤
│R │Geben Sie Text im Umschreibemodus ein│
└──┴────────────┘
2. Bewegen Sie den Cursor
┌─────┬──── ───────┐
│Befehl│Beschreibung│
├─────┼─── ─────── ─┤
│j oder Pfeil nach unten│Eine Zeile nach unten bewegen│
├─────┼──────────┤
│k oder Pfeil nach oben│Eine Zeile nach oben bewegen │
├──────┼─── ────────┤
│h oder Pfeil nach links│Bewegen Sie ein Zeichen nach links│ ── ─────────┤
│l Oder Pfeil nach rechts │Ein Zeichen nach rechts verschieben│
├─────┼───────────┤
│w   │Bewegen Sie ein Wort nach rechts│
├──── ─┼───────────┤
│W   │Bewegen Sie ein durch ein Leerzeichen getrenntes Wort nach rechts│ 🎜 >├─────┼─────────── ┤
│b   │Bewegen Sie ein Wort nach links│
├─────┼── ───── ────┤
│B   │Bewegen Sie ein durch Leerzeichen getrenntes Wort nach links│
├─────┼───────────┤ 0   │Bewegen zum Zeilenanfang│
│Strg-F │Seite vor│
├─ ────┼───────────┤
│Strg-B │Seite zurück│
├─────┼────────── ─┤
│nG  │Bis zur n-ten Zeile│
├─────┼ ──────── ──┤
│G  │Zur letzten Zeile│
└─ ────┴───────────┘
3. Ersatztext
┌─ ── ──┬──────┐
│Befehl│Beschreibung│
├─────┼──────┤
│$   │Bis zum Ende der Zeile│ ──── ─┤
│(   │Zum Satzanfang│
├─────┼─────┤
│)   │Zum Satzende│
├ ── ────┼── ────┤
│{  │Zum Anfang des Absatzes│
├─────┼──────┤
│}  │Zum Ende des Absatzes ─┐
│Befehl│Beschreibung│
├───┼───────────┤
│r  │Ein Zeichen ersetzen│
├─ ──┼── ────────────┤
│c  │Ändern Sie den Text, bis Sie die Esc-Taste drücken│
├───┼───────── ─┤
│cw │Ändere das nächste Wort│
├── ─┼───────────┤
│cnw  │Ändere die nächsten n Wörter│
└─ ──┴─ ───────────┘
5. Textbearbeitung
┌──┬─────────────────── ┐
│ Mingsi│Beschreibung│
├── ┼──────────────────────┤
│yy │Verschieben Sie eine Textzeile in den Standardpuffer│
├──┼── ────────────────────┤
│yn │Verschieben Sie das nächste Wort in den Standardpuffer│ ├─ ─┼──── ──────────────────┤
│ynw │Verschieben Sie die folgenden n Wörter in den Standardpuffer│
├── ┼── ── ──────────────────┤
│p  │Wenn der Standardpuffer eine Textzeile enthält, fügen Sie nach dem aktuellen eine Leerzeile ein │
│  │ Zeile Fügen Sie den Toninhalt im Standardpuffer in diese Zeile ein. Wenn der Standardpuffer mehrere Wörter enthält, fügen Sie diese Wörter rechts vom Cursor ein. │
├──┼──────────────────────┤
│P │Wenn der Standardpuffer eine Textzeile enthält, wird die aktuelle │
│ │Fügen Sie vor der Zeile eine leere Zeile ein und fügen Sie den Inhalt │
│ │ im Standardpuffer in diese Zeile ein. Wenn der Standardpuffer │
│ │Mehrere Wörter enthält, fügen Sie diese Wörter links ein des Cursors

 │
└──┴───────────────────────┘
6 , speichern und. beenden
┌───────────┬─────────────┐
│Befehl│Beschreibung│ ─ ────── ──┼───────────────┤
│zz     │Speichern und beenden│
├────── ───── ┼───── ──────────┤
│:w Dateiname  │Datei schreiben│ ─────── ───┤
│:W    │Datei schreiben│
├───────────┼────────── ── ───┤
│ :x   │Speichern (wenn die aktuelle Datei geändert wurde) und beenden│
├───────────┼────────────. ─── ┤
: q! ┤
│:q │Exit vi    │

Allgemeine VI-Tipps

Man kann sagen, dass der VI-Befehl der am häufigsten verwendete Befehl zum Bearbeiten von Dateien in der Unix/Linux-Welt ist, aber aufgrund seines Befehls gibt es viele Sätze , und viele Menschen sind es nicht gewohnt, sie zu verwenden. Tatsächlich müssen Sie nur die Grundbefehle beherrschen und sie dann flexibel verwenden. Sie werden ihre Vorteile entdecken und diese Methode nach und nach verwenden. Ziel dieses Artikels ist es, einige der am häufigsten verwendeten Befehle und fortgeschrittenen Anwendungstechniken von VI vorzustellen.

1. Einführung in Grundbefehle

---- 1. Cursorbefehl

k, j, h, l – Befehle zur Bewegung des Cursors nach oben, unten, links und rechts. Obwohl Sie unter Linux die 4 Cursortasten auf der rechten Seite der Tastatur verwenden können, ist es dennoch sehr nützlich, sich diese 4 Befehle zu merken. Diese 4 Tasten sind die Grundposition Ihrer rechten Hand auf der Tastatur.
nG – Sprungbefehl. n ist die Anzahl der Zeilen. Dieser Befehl springt den Cursor sofort zur angegebenen Zeile.
Strg+G – Geben Sie die Anzahl der Zeilen und Spalten an der Cursorposition an.
w, b – Lassen Sie den Cursor ein Wort vorwärts oder rückwärts springen.
---- 2. Befehle bearbeiten
i, a, r – Zeichenbefehle vor, nach und am Cursor einfügen (i=einfügen, a=anhängen, r=ersetzen).
cw, dw – Befehle zum Ändern (Ersetzen)/Löschen des Wortes am Cursor (c=ändern, d=löschen).
x, d$, dd – Befehle zum Löschen eines Zeichens, zum Löschen aller Zeichen vom Cursor bis zum Ende der Zeile und zum Löschen der gesamten Zeile.
---- 3. Suchbefehl
----/string,?string – Befehl zum Suchen der entsprechenden Zeichenfolge rückwärts oder vorwärts von der Cursorposition aus.
---- 4. Kopierbefehl
---- yy, p – Befehl zum Kopieren einer Zeile in die Zwischenablage oder zum Entfernen des Inhalts der Zwischenablage.

2. Häufig gestellte Fragen und Anwendungstipps

---- 1. Lesen Sie den Inhalt von /etc/passwd in einer neuen Datei und extrahieren Sie den Benutzernamenteil.
---- vi-Datei
---- :r /etc/passwd Lesen Sie /etc/passwd an der Cursorposition in der geöffneten Dateidatei
---- :%s/: * //g Alle Teile vom Doppelpunkt bis zum Ende der Zeile nach dem Benutzernamen in /etc/passwd löschen.
---- Sie können den Dateiinhalt auch nach der angegebenen Zeilennummer lesen. Verwenden Sie beispielsweise den Befehl „:3r /etc/passwd“, um den gesamten Inhalt von /etc/passwd ab der 3. Zeile zu lesen die neue Datei.
---- Wir können auch die folgende Methode verwenden, um alle Leerzeilen und Kommentarzeilen, die mit # beginnen, in der Datei zu löschen.
---- #cat grep -v ^$ |. Nachdem ich eine Datei zum Bearbeiten geöffnet hatte, stellte ich fest, dass der angemeldete Benutzer keine Schreibberechtigung für die Datei hatte und sie nicht speichern konnte. Die Änderungen mussten in einer temporären Datei gespeichert werden.
---- vi-Datei
---- :w /tmp/1 Speichern Sie alle vorgenommenen Änderungen. Sie können einige Änderungen auch in einer temporären Datei speichern, z. B. nur die Zeilen 20 bis 59 Der Inhalt dazwischen wird in der Datei /tmp/1 gespeichert. Wir können den folgenden Befehl eingeben.
---- vi-Datei
---- :20,59w /tmp/1

---- 3. Verwenden Sie VI, um eine Datei zu bearbeiten, aber ein großer Teil des Inhalts muss gelöscht werden.
---- Verwenden Sie zunächst den Bearbeitungsbefehl „vi-Datei“, um die Datei zu öffnen, bewegen Sie dann den Cursor auf die Zeile, die gelöscht werden muss, drücken Sie Strg+G, um die Zeilennummer anzuzeigen, und drücken Sie dann Strg+G Ende, um die Zeilennummer am Ende der Datei anzuzeigen.
---- :23,1045d Angenommen, die zweimal erhaltenen Zeilennummern sind 23 und 1045, dann löschen Sie den gesamten Inhalt in diesem Zeitraum. Sie können auch die Befehle ma und mb verwenden, um die Startzeile und die Endzeile zu markieren gelöscht werden, und löschen Sie es dann mit dem Befehl „:a,bd“.

---- 4. Fügen Sie am Anfang oder Ende jeder Zeile der gesamten Datei oder einiger Zeilen einige Zeichenfolgen hinzu.
---- vi-Datei
---- :3,$s/^/some string / Fügen Sie „some string“ vom Anfang der ersten Zeile bis zur letzten Zeile der Datei ein.
---- :%s/$/some string/g Fügen Sie „some string“ am Ende jeder Zeile in der gesamten Datei hinzu.
---- :%s/string1/string2/g Ersetzen Sie „string1“ durch „string2“ in der gesamten Datei.
---- :3,7s/string1/string2/ Ersetzen Sie „string1“ nur in der 3. bis 7. Zeile der Datei durch „string2“.
---- Hinweis: s steht für Ersatz, % steht für alle Zeilen und g steht für global.

---- 5. Bearbeiten Sie zwei Dateien gleichzeitig, kopieren Sie Text aus einer Datei und fügen Sie ihn in die andere ein.
---- vi Datei1 Datei2
---- yy Kopiere die Zeile am Cursor von Datei 1
---- :n zu Datei 2 wechseln (n=next)
-- -- p Füge die kopierte Zeile an der Cursorposition von Datei 2 ein
---- :n Zurück zu Datei 1 wechseln

---- 6. Ersetzen Sie den Pfad in der Datei.
---- Verwenden Sie den Befehl „:%s#/usr/bin#/bin#g“, um alle Pfade /usr/bin in der Datei durch /bin zu ersetzen. Sie können auch den Befehl „:%s//usr/bin//bin/g“ verwenden, wobei „“ ein Escape-Zeichen ist, das angibt, dass das folgende „/“-Zeichen ein Zeichen mit tatsächlicher Bedeutung und kein Trennzeichen ist.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn