VIM alle leerzeichen am zeilenende abschneiden

Software besorgen und anwenden
Post Reply
Message
Author
mrvim

VIM alle leerzeichen am zeilenende abschneiden

#1 Post by mrvim »

hallo leute,

wie ist es möglich, alle leerzeichen am zeilenende zu löschen?
oder wahlweise evtl alle am zeilenanfang und am ende (ähnlich truncate)?

thx

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

#2 Post by heinrich »

Klar geht das:

GVim:
:%s/\s*$//g

vi:
sorry, aber vi scheint das nicht zu können

GNU/Emacs:
Funktionen aufrufen:
M-x edit-picture
C-c C-c
It just works.

mrvim

leerzeichen

#3 Post by mrvim »

super, es funzt

kannst du mir auch noch erklären was die einzelnen zeichen machen?

ich weiss nur das das $ für "bis zeilenende steht" welcher part ist für "alle leerzeichen vom letzten zeichen (ausser leer) löschen" verantwortlich?

danke

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

#4 Post by heinrich »

:%s/\s*$//g

das ":%" kannst du auch schreiben als ":1,$ " und bedeutet nur, dass das was jetzt noch kommt für jede Zeile in der Datei (beginnend vom Dateianfang bis Dateiende) durchzuführen ist

"s/\s*$//g" wird dann für jede Zeile der Datei ausgeführt.

"s/..../..../g" führt allgemein eine Ersetzung durch

Wenden wir uns dem "\s*$" zu:

"\s" matched alle Leerzeichen und Tabulatoren

"\s*" matched einfaches und mehrfaches vorkommen von Leerzeichen und/oder Tabulatoren

"\s*$" matched einfaches und mehrfaches vorkommen von Leerzeichen und/oder Tabulatoren vor einem Zeilenende
It just works.

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

#5 Post by heinrich »

Genauso kannst du mit vim/gvim das "Lösche alle Leerzeichen und Tabulatoren am Zeilenanfang realisieren:

"\s" matched Leerzeichen und Tabulatoren

"\s*" matched ein- und mehrfache Leerzeichen und Tabulatoren

"^\s*" matched ein- und mehrfache Leerzeichen und Tabulatoren am Zeilenanfang

jetzt noch das ganze in ein "s/..../..../g" eingebunden für das Suchen+Ersetzen: "s/^\s*//g"

und schlussendlich noch das "für jede Zeile der Datei" mit ":%" oder mit ":1,$ " dann ergibt sich:

:%s/^\s*//g
oder
:1,$ s/^\s*//g
It just works.

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

#6 Post by heinrich »

vim/gvim kennt ausser "\s" noch eine ganze menge weiterer Pattern

Einfach mal im vim/gvim ":help pattern" eintippen oder zu http://www.vim.org/htmldoc/pattern.html gehen


Für den Emacs:
Löschen von Leerzeichen/Tabs am Zeilenanfang mit dem Emacs:

M-x query-replace-regexp <enter>^[<leerzeichen><tab>]*<enter><enter>

Das <enter>, <leerzeichen> und <tab> ist nicht als Text einzutippen, sondern es sind die jeweiligen Tasten zu drücken ;-)

Siehe auch innerhalb des Emacs wenn du "C-h a query-replace-regexp" eintippst.
It just works.

mrvim

leerzeichen

#7 Post by mrvim »

herzlichen dank für die gute und ausführliche antwort ;-)

Post Reply