:%s/\s\{2,}//g
Wo die Elemente sind:
%s
Ersatz in die gesamte Datei
\s
was Ersatz: ein Raum
\{2,}
zwei oder mehr Vorkommen
//
mit nichts ersetzen (d löschen)
g
es in der aktuellen Zeile bei jedem Auftreten zu tun (nicht nur auf dem ersten)
Die Elemente werden klarer werden, wenn Sie die anatomy of the substitute call sehen:
s/PATTERN/REPLACEMENT/FLAGS
Also, die PATTERN
in unserem Fall ist \s\{2,}
, die REPLACEMENT
ist leer und FLAGS
sind nur g
. Der Bereich wird vorangestellt und ist %
, was die gesamte Datei angibt. Wenn Sie es nur auf einigen Linien tun mögen, können Sie die Linien visuell auswählen und geben Sie dann :s....
Edit:
In Ihrer Frage, schreiben Sie, dass Sie
zu
wollen lösche jedes doppelte Leerzeichen in einer Datei
Das habe ich geantwortet. Wenn Sie zwei ersetzen wollen und mehr Räume, die durch ein, würde der Befehl
:%s/\s\{2,}/ /g
Nur um einen kleinen Punkt zu verdeutlichen: Das '\ s' Muster passt nicht zu" einem Leerzeichen ", sondern eher zu Leerzeichen. In Vim würde das angegebene Muster einer Kombination von zwei oder mehr Instanzen von und entsprechen. –
glts