Elimina dal cursore fino all'ennesima occorrenza del carattere x


15

So che posso cancellare dal cursore fino a includere la prima occorrenza di un carattere x con d/x<CR>o con v/x<CR>dse voglio prima vedere la selezione e poi cancellare. Come posso cancellare dalla posizione corrente del cursore fino al n ° verificarsi di x ?

Ad esempio, se il cursore si trova dopo il primo spazio in

yada yada yada
yada yada yada x
yada yada yada x
yada yada yada x

xx

e scrivo un comando per rimuovere fino alla terza x il risultato deve essere:

yada
xx

Risposte:


21

Tu puoi fare :

wd4/x<Enter>

Se inizi in alto a sinistra nel testo

Spiegazione

  • w : passa all'inizio della parola successiva
  • d : Elimina
  • 4/x<Enter> : fino alla 4a occorrenza di x

Se non conosci il numero di volte in cui vorresti farlo in anticipo, puoi anche fare: d/x<Enter>e poi premere .per ripetere


5
Bonus suggerimento: funziona anche con questo fe gli amici ( F, t, T, ;): ad esempio, 2fxsi arriva alla seconda x, o 2;ripeterà l'ultima fdue volte.
Martin Tournoij,

1
@Carpetsmoker: funziona solo per le lettere nella riga corrente.
Jürgen Krämer,

5

Puoi farlo digitando

<n>df<x>

dove:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x

0
<n>macro 

è comunemente usato in vim per ripetere la macro "n" volte.

quindi per eliminare fino alla prima occorrenza di x, dovrai usare 1dfx. Allo stesso modo, per eliminare fino alla 3a occorrenza di x, dovrai usare 3dfx.


1
Penso che ti sia sfuggita la parola "macro": in vim una macro è una sequenza di chiavi registrata in un registro e chiama con @xdov'è il xtuo registro. Quello a cui ti riferisci è un normale comando in modalità.
statox

Sì, intendevo un comando normale. Ma questo vale anche per una macro. È possibile eseguire la macro n volte aggiungendo un numero prima della macro.
thenakulchawla,

1
Sì è vero. Stavo solo sottolineando che <n>macronon è una notazione standard in vim per le macro e poiché la tua risposta utilizza un comando in modalità normale è praticamente la stessa di quella di Kapil.
statox

0

Dato:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$

dove $indicano le estremità delle linee ( :set listmodalità), se il cursore si trova all'inizio del secondo yadanella prima riga, per prima cosa dobbiamo eseguire il backup nello spazio precedente usando h, per includerlo nella cancellazione. Quindi basta 4d/xEnter. In altre parole, solo un conteggio di fronte d/x. Il risultato è esattamente:

yada$
xx$
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.