Wie kann man in vim jeweils ein Leerzeichen von Zeile n bis m auf einmal einfügen?

Gast #6519298
Lesenswert?

Ich nutze vim in der Regel nicht, bin da also nicht fit drin.

Jetzt möchte ich, wie in der Überschrift angegeben, eine Datei 
bearbeiten, für die vim eventuell hilfreich sein könnte.

Könnte mir jemand sagen, was für ein Kommando man in vim eingeben muss, 
um die obige Aufgabe durchzuführen?

Sagen wir mal n ist 120 und m ist Zeilennummer 180.
Gast #6519328
Lesenswert?

Nano schrieb:
> Jetzt würde mich noch interessieren, was die einzelnen Abschnitte
> bedeuten:
> Also
> "s"

Search.

> "/^"

/ beginnt die zu suchende Regular Expression, ^ ist der Zeilenanfang. 
Mit $ kannst Du übrigens das Zeilenende matchen.

> "/ " ich schätze mal, das baut das einzufügende Zeichen ein, in dem Fall
> ein Leerzeichen.

Genau.

> "/g"

Global, also nicht nur den ersten Match ersetzen.
Gast #6519626
Lesenswert?

Ich hätte vermutlich
1
120,180g/.\+/:norm I <CR>
genommen; das <CR> ist als „Enter drücken“ zu verstehen.

Im Unterschied zu dem Ansatz oben, werden hier keine Leerzeichen an den 
Anfang leerer Zeilen hinzugefügt. Könnte man mit der Variante oben 
natürlich auch verhindern.
Gast #6519708
Lesenswert?

Jemand schrieb:
> Ich hätte vermutlich
>
1
120,180g/.\+/:norm I <CR>
> genommen; das <CR> ist als „Enter drücken“ zu verstehen.
>
> Im Unterschied zu dem Ansatz oben, werden hier keine Leerzeichen an den
> Anfang leerer Zeilen hinzugefügt. Könnte man mit der Variante oben
> natürlich auch verhindern.

Mein Editor den ich normalerweise benutze entfernt die Leerzeichen am 
Ende einer Zeile automatisch.
#6521337
Lesenswert?

Hmmm schrieb:
> Nano schrieb:
>> Jetzt würde mich noch interessieren, was die einzelnen Abschnitte
>> bedeuten:
>> Also
>> "s"
>
> Search.

Eigentlich substitute.

>> "/^"
>
> / beginnt die zu suchende Regular Expression,

Man kann dafür übrigens nicht nur /, sondern jedes beliebige 
Sonderzeichen verwenden. Also s.^. . hätte die gleiche Wirkung.

Übrigens hat vim auch eine Hilfe. Mit :help :s bekommt man die zum 
subistitue-Kommando.

Nano schrieb:
> Mein Editor den ich normalerweise benutze entfernt die Leerzeichen am
> Ende einer Zeile automatisch.

Meiner pfuscht mir nicht in den Text rein, wenn ich ihm nicht sage, dass 
er das soll. Ich könnte das natürlich so einrichten, dass er das macht, 
aber das will ich gar nicht. Das macht sich beim Einchecken ins Repo 
nicht so gut, wenn der Editor einfach unkontrolliert Dinge verändert.
Gast #6521786
Lesenswert?

Rolf M. schrieb:
> Nano schrieb:
>> Mein Editor den ich normalerweise benutze entfernt die Leerzeichen am
>> Ende einer Zeile automatisch.
>
> Meiner pfuscht mir nicht in den Text rein, wenn ich ihm nicht sage, dass
> er das soll.

Er pfuscht mir nicht rein, ich habe ihn so eingestellt, damit er genau 
das macht.

Ich hatte jedenfalls noch nie eine Datei, bei der ich dringend 
Leerzeichen am Ende benötigen würde. Mir ist auch kein textbasiertes 
Dateiformat bekannt, das auf so etwas angewiesen ist.

> Ich könnte das natürlich so einrichten, dass er das macht,

Aha.

> Das macht sich beim Einchecken ins Repo
> nicht so gut, wenn der Editor einfach unkontrolliert Dinge verändert.

Das Repo verändert selber Dinge.
Kannst ja mal nen Text mit CRLF in ein git Repo einfügen, wenn das 
richtig eingestellt ist, dann wird das CR entfernt.
Gast #6521797
Lesenswert?

Nano schrieb:
> Ich hatte jedenfalls noch nie eine Datei, bei der ich dringend
> Leerzeichen am Ende benötigen würde. Mir ist auch kein textbasiertes
> Dateiformat bekannt, das auf so etwas angewiesen ist.

Einen gängigen Anwendungsfall gibt es, nämlich Signaturen von Mails und 
Usenet-Postings:

https://en.wikipedia.org/wiki/Signature_block#Standard_delimiter

Bei Quoted-Printable-Encoding ist das Leerzeichen allerdings in der Mail 
nicht mehr in nackter Form vorhanden.
#6521831
Lesenswert?

Nano schrieb:
>> Das macht sich beim Einchecken ins Repo
>> nicht so gut, wenn der Editor einfach unkontrolliert Dinge verändert.
>
> Das Repo verändert selber Dinge.
> Kannst ja mal nen Text mit CRLF in ein git Repo einfügen, wenn das
> richtig eingestellt ist, dann wird das CR entfernt.

Es passt es halt an das jeweilige System an, wenn man das möchte. Aber 
das wird intern gemacht. Dazu wird nicht jedesmal eine Änderung draus 
gemacht. Wenn der Editor da aber Zeilenenden verändert, müllt mir das 
den Commit im Repo zu.

Nano schrieb:
> Für Mails nutze ich mein E-Mail Programm, das hat nen eigenen Editor.

Das tue ich auch. Früher habe ich in der Firma Outlook als Mail- und 
Usenet-Programm nutzen müssen. Dessen Editor entfernt auch ungefragt 
Leerzeichen von den Zeilenenden und macht damit den Signaturtrenner 
kaputt - natürlich nicht abschaltbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren