Wie kann ich mit vi alle Zeilen in einer Datei löschen?

Wie kann ich mit vi alle Zeilen in einer Datei löschen?

Wie kann ich mit vi alle Zeilen in einer Datei löschen?

Im Moment verwende ich dazu etwas wie das hier, um alle Zeilen in einer Datei zu entfernen:

echo > test.txt

Wie kann ich mit alle Zeilen löschen vi?

Notiz: Die Verwendung ddist keine gute Option. Es können viele Zeilen vorhanden sein.

Antwort1

In vitun

:1,$d

, um alle Zeilen zu löschen.

Das :leitet einen Befehl ein (und bewegt den Cursor nach unten).
Das 1,$ist ein Hinweis darauf, auf welche Zeilen der folgende Befehl ( d) wirken soll. In diesem Fall der Bereich von Zeile eins bis zur letzten Zeile (durch gekennzeichnet $, Sie müssen also nicht wissen, wie viele Zeilen das Dokument hat).
Das letzte dsteht für das Löschen der angegebenen Zeilen.

Es gibt eine kürzere Form ( :%d), aber ich benutze sie nie. Sie :1,$dkann leichter „angepasst“ werden, indem man z. B. :4,$-2dnur die ersten 3 und die letzten 2 Zeilen stehen lässt und den Rest löscht.

Antwort2

In vi verwende ich

:%d

Wo

  • :weist vi an, in den Befehlsmodus zu wechseln
  • %bedeutet alle Zeilen
  • d: löschen

Geben Sie in der Befehlszeile Folgendes ein:

> test.txt

werde ich auch tun.

Was ist das Problem mit dd?

dd if=/dev/null of=test.txt

Wo

  • /dev/nullist eine spezielle 0-Byte-Datei
  • ifist die Eingabedatei
  • ofist die Ausgabedatei

Antwort3

Ich empfehle Ihnen, einfach Folgendes zu tun (sollte in jeder POSIX-kompatiblen Shell funktionieren):

> test.txt

Wenn Sie es wirklich mit vi machen möchten, können Sie Folgendes tun:

  • 1G (zur ersten Zeile gehen)
  • dG (bis zur letzten Zeile löschen)

Antwort4

Wenn sich Ihr Cursor in der ersten Zeile befindet (wenn nicht, geben Sie ein: ggoder 1G), können Sie einfach verwenden dG. Dadurch werden alle Zeilen von der aktuellen Zeile bis zum Ende der Datei gelöscht. Um sicherzustellen, dass Sie alle Zeilen aus der Datei löschen, können Sie beides kombinieren, z. B.: ggdG(im Befehlsmodus).

Oder %dim Ex-Modus, Befehlszeilenbeispiel: vim +%d foo.bar.

Verwandt:Wie kann ich in VIM den gesamten Text von der aktuellen Zeile bis zum Dateiende löschen?

verwandte Informationen