Führen Sie den normalen Befehl über den Bereich aus


7

Für eine Datei, die so aussieht:

   2  AD,42.546245,1.601554,Andorra,376
   3  AE,23.424076,53.847818,United Arab Emirates,971
   4  AF,33.93911,67.709953,Afghanistan,93
   5  AG,17.060816,-61.796428,Antigua and Barbuda,1

Ich versuche, die führenden Leerzeichen und Zahlen für die ersten 10 Zeilen zu entfernen, also würde ich am Ende mit

AD,42.546245,1.601554,Andorra,376
AE,23.424076,53.847818,United Arab Emirates,971
AF,33.93911,67.709953,Afghanistan,93
AG,17.060816,-61.796428,Antigua and Barbuda,1

Warum funktioniert "zwei Wörter entfernen" :d2wfür eine einzelne Zeile, jedoch nicht für einen Bereich :1,10d2w?

HINWEIS:

Das Problem selbst wird aufgrund des festen Formats mit gelöst. Es :1,10s/.\{8\}//geht also mehr darum, zu verstehen, wie Bereiche mit verwendet werden:dNw


2
Außerdem: :1,10s/\v^(\s|\d)*/(Entfernen Sie eine beliebige Anzahl von Leerzeichen oder Ziffern am Anfang der ersten 10 Zeilen)
VanLaser

Antworten:


16

Sie können dies mit dem normalen Befehl tun:

:1,10normal d2w

Dies liegt daran, dass der dBediener keinen Bereich akzeptiert, sondern nur eine Bewegung:

:h d

["x]d{motion}           Delete text that {motion} moves over [into register x].

Alternativ können Sie Ihren Text im visuellen Modus auswählen und Folgendes tun:

:'<,'>normal d2w

Entschuldigung für die explizite Frage: :normalWird es möglich sein, den Befehl so auszuführen, als würde ich ihn beim Navigieren mit dem Cursor eingeben?
Fiximan

1
:normalMit dieser Option können Sie einen Befehl so ausführen, wie er im normalen Modus eingegeben wurde (wenn Sie mit dem Cursor navigieren hjkl). Siehe::h :normal
nobe4

1
Die Doppelpunkte vor dem Normalen nach dem Bereich sind redundant.
FDinoff
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.