Ich habe versucht, Folgendes zu befolgen:
So löschen Sie ausgewählten Text im VI-Editor
aber
5dd
gibt
E492: Kein Editorbefehl: 5dd
Ich habe dann versucht:
5d
Was nur eine einzelne Zeile löscht. Wie kann ich mehrere Zeilen löschen?
Ich habe versucht, Folgendes zu befolgen:
So löschen Sie ausgewählten Text im VI-Editor
aber
5dd
gibt
E492: Kein Editorbefehl: 5dd
Ich habe dann versucht:
5d
Was nur eine einzelne Zeile löscht. Wie kann ich mehrere Zeilen löschen?
Antworten:
Klingt so, als würden Sie die Befehle im Befehlsmodus eingeben (auch bekannt als "Ex-Modus"). In diesem Zusammenhang :5d
würde Zeile 5 entfernen, sonst nichts. Damit Sie 5dd
wie beabsichtigt arbeiten können - dh fünf aufeinanderfolgende Zeilen ab dem Cursor entfernen -, geben Sie sie im normalen Modus ein und stellen Sie den Befehlen kein Präfix voran :
.
Ich finde das einfacher
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Sie können mehrere (Bereichs-) Zeilen löschen, wenn Sie die Zeilennummern kennen:
:[start_line_no],[end_line_no]d
Hinweis: d steht für Löschen
Dabei ist
start_line_no die Anfangszeile, die Sie löschen möchten, und end_line_no ist die Endzeile, die Sie löschen möchten. Die Zeilen zwischen Start und Ende, einschließlich Start und Ende, werden gelöscht.
Z.B:
:45,101d
Die Zeilen zwischen 45 und 101 einschließlich 45 und 101 werden gelöscht.
$
die letzte Zeile in der Datei angeben. Also :45,$d
würde jede Zeile von 45 bis zum Ende löschen.
/<\/div>/
:.,[end_line_no]d
Befehle, die zur Verwendung im normalen Modus aufgelistet sind (Präfix mit :für den Befehlsmodus).
In Vim getestet.
Nach Zeilenbetrag:
Nach Zeilennummern:
Backwards range given, OK to swap (y/n)?
Wenn Sie eine nicht visuelle Modusmethode bevorzugen und die Zeilennummern bestätigen, möchte ich Ihnen einen anderen einfachen Weg vorschlagen.
Beispiel
Ich möchte Text aus Zeile 45 bis Zeile 101 löschen.
Meine Methode schlägt vor, dass Sie im Befehlsmodus einen der folgenden Befehle eingeben:
45Gd101G
Es liest:
Gehen Sie zu Zeile 45 (
45G
) und löschen Sie Text (d
) aus der aktuellen Zeile in Zeile 101 (101G
).
Beachten Sie, dass vim
Sie gg
anstelle von verwenden können G
.
Vergleichen Sie mit der Antwort von @Bonnie Varghese:
:45,101d[enter]
Der obige Befehl aus seiner Antwort erfordert 9-maliges Tippen, einschließlich enter, wobei meine Antwort 8- bis 10-maliges Tippen erfordert. Somit ist eine Geschwindigkeit meiner Methode vergleichbar.
Persönlich ich mich lieber 45Gd101G
über , :45,101d
weil ich wie auf Stick auf die Syntax des Befehls des vi, in diesem Fall:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Drücken Sie die EscTaste, um sicherzustellen, dass Sie sich nicht in einem Bearbeitungsmodus befinden. Platzieren Sie den Cursor in der ersten zu löschenden Zeile. Geben Sie ein :5dd
. Die aktuelle Zeile und die nächsten vier Zeilen sollten gelöscht werden.
Alternativ, wenn Sie die Zeilennummerierung aktiviert haben ...
Drücken Sie die EscTaste, um sicherzustellen, dass Sie sich nicht in einem Bearbeitungsmodus befinden. Geben Sie ein, :#,#d
wo '#' für die zu löschenden Anfangs- und Endzeilennummern steht.
Wenn Sie einen Bereich NACH einem bestimmten Zeilentrigger löschen möchten, können Sie so etwas verwenden
:g/^TMPDIR/ :.,+11d
Das löscht 11 Zeilen (einschließlich) nach jeder Begegnung von ^TMPDIR
.
Um alle Zeilen zu löschen, verwenden Sie - ESC gg dG. Um einige Zeilen zu löschen, sagen wir 5 und verwenden Sie ESC 5dd
Es könnte wie folgt gemacht werden ..