it-swarm.com.de

Wie lösche ich das letzte Zeichen in jeder Zeile mit vim?

Ich habe eine Datei:

12345a
123456b
1234567c
12345678d
123456789e

Wie lösche ich das letzte Zeichen in jeder Zeile?.
Und die Datei wird sein

12345
123456
1234567
12345678
123456789
20
Larry Lu

Sie können :%s/.\{1}$// verwenden, um ein Zeichen am Ende jeder Zeile zu löschen.

35
Jevl

:%normal $x

  • : versetzt Sie in den Befehlszeilenmodus
  • % ist ein Bereich, der die gesamte Datei darstellt
  • normal sagt, dass wir einen normalen Modusbefehl ausführen
  • $x löscht das letzte Zeichen in der Zeile

Einige überschneiden sich mit anderen Antworten, aber für mich liest sich dies am einfachsten.

13
tjstankus

Verwenden Sie den Befehl :g:

:g/^/norm $x
  • ^ entspricht jeder Zeile, die bearbeitet werden soll.
  • norm ist eine Abkürzung für normal und geht vor dem normalen Befehl, den Sie ausführen möchten.
  • $x gehe zum Ende einer Zeile und lösche ein Zeichen im normalen Modus
4
Wray Zheng

TLDR::%s/.$//

Erklärungen und weitere Beispiele lesen Sie weiter.

  • :%s/.$//
    • löscht ein beliebiges Zeichen am Ende aller Zeilen (oder besser: Ersetzt jedes Zeichen am Ende durch nichts)
    • s = substitute Befehl
    • . = beliebiges Zeichen
    • wenn Sie . (kein Zeichen) löschen möchten, verwenden Sie \.$ anstelle von .$.
  • :'<,'>s/.$//g
    • löscht ein beliebiges Zeichen am Ende aller Zeilen der aktuellen Auswahl
    • '<,'> = aktuelle Auswahl (Sie erhalten diese durch SHIFT+V, wählen dann die Zeilen aus und dann :
  • :%s/;$//
    • löscht ; am Ende aller Zeilen 
    • nützlich, wenn Sie Code aus einer Sprache, die ; benötigt, in eine andere Sprache kopieren und einfügen
2
Moe Pad