vim: Ersetze alle Charaktere bis zu einem bestimmten Token

8

Mit vim möchte ich alle Zeichen bis zu einem bestimmten Zeichen durch ein anderes Zeichen ersetzen, z. B. ein Leerzeichen - ohne , das sich auf das Layout / die Anzahl der Zeichen in der Zeile auswirkt. Hier ist ein Beispiel:

Vorher:

%Vor%

Nach dem Ersetzen von , intent(out) durch Leerzeichen (d. h. beginnend mit , und hinauf zu ) ):

%Vor%

Ich weiß über r , um ein Zeichen zu ersetzen, und über nr , um n -Zeichen zu ersetzen, aber ich würde gerne wissen, ob ich meine Aufgabe erfüllen kann, ohne zuerst die Zeichen zählen zu müssen, die ich ersetzen möchte.

Vielen Dank für Ihre Antworten!

    
canavanin 30.07.2012, 15:45
quelle

4 Antworten

20

Der visuelle Modus ist wahrscheinlich der kürzeste Weg hier:

%Vor%
  • v visueller Modus
  • eingeben
  • t: select bis :
  • r (Leerzeichen nach r ) ersetzt die ausgewählte Region durch Leerzeichen.
Thor 30.07.2012, 16:01
quelle
1
  

Ich weiß über r, um ein Zeichen zu ersetzen

Wusstest du, dass R dich in diesem Ersetzungsmodus hält? Sie könnten also R drücken und dann Space halten, bis Sie alles, was Sie wollen, ersetzt haben.

Allerdings würde ich immer noch mit Thors Antwort gehen. Im visuellen Modus können Sie die effizienten Methoden zur Textnavigation in vim verwenden, ohne Zeichen auszählen zu müssen.

Aber wenn Sie nicht zustimmen, gibt es immer EasyMotion .

    
idbrii 31.07.2012 03:08
quelle
1

Geben Sie im Befehlsmodus df ein. bis zu diesem (?) Zeichen löschen. Dann ' ich ', um zum Einfügen zurückzukehren.

Zum Beispiel, wenn der folgende Satz in Ihrer Ansicht ist:

%Vor%

und Sie geben dfs

ein

Sie werden verlassen mit:

%Vor%     
Quinn Carver 18.05.2017 15:14
quelle
0

Sie können hier den regulären Ausdruck verwenden (verwenden Sie (.*?) , um alle Werte bis zu einem Token zu referenzieren).

Zum Beispiel:

Der Regex: (.*?)foo wird alles bis foo los.

    
Libby Eichelberger 30.07.2012 15:47
quelle

Tags und Links