vi scorciatoia per eliminare "fino al prossimo carattere X"


194

Capisco che vi ha tasti di scelta rapida per eliminare caratteri, parole e righe con varie opzioni.

Tuttavia, non sono riuscito a trovare questo:

  • elimina dal cursore al successivo carattere specificato

Ad esempio, potrei digitare du"aspettandomi che l'editor "elimini finché non "viene trovato il carattere successivo "

Il più vicino che conosco è d9wdov'è 9il numero di parole da eliminare.

Qualcuno sa se questo è possibile?


Se sei interessato a Vi e Vim, hanno ora il loro sito SE: Vi e Vim
dessert

Risposte:


303

Usa dtc, dove c è qualsiasi personaggio, ad esempio per te, che desideridt"

Questo cancellerà fino a ma non includendo c .

Se tu avessi:

delete until exclamation point!

E il cursore era sul primo spazio e hai digitato dt!, otterrai:

delete!

Inoltre dfc.

Questo cancellerà fino e compreso c .

L'uso df!dello stesso esempio sopra ti darebbe:

delete

Praticamente qualsiasi "movimento" può essere utilizzato per i d, c, ye comandi simili.


7
Presumibilmente il mnemonico è t per "fino a"? Bella risposta.
ripensare il

15
Puoi anche eliminare l'istanza precedente di un personaggio con la versione maiuscola dei comandi di movimento. Forse più utile per le virgole - dT,e dF,.
joelostblom,

3
Questo non funziona su più righe.
0xcaff,

3
Questo può essere fatto su una gamma di linee?
Ray

2
Per fare qualcosa di simile su un intervallo di righe, è possibile eseguire una normale ricerca (come nella risposta di zpletan): d/wordricerche fino a word. Deve essere seguito da invio (per chiudere la ricerca).
Eric O Lebigot,

59
  • Per cancellare in avanti fino al tipo di carattere "X" dtX

  • Per cancellare in avanti tramite il carattere 'X' dfX

  • Per cancellare all'indietro fino al tipo di carattere "X" dTX

  • Per cancellare all'indietro tramite il carattere 'X' dFX


30

L'input dt # (non un comando:, usalo come un movimento come G)

verrà eliminato dal cursore fino a, ma non includendo il #. Puoi sostituire qualsiasi carattere con #.


2
Questa è la risposta esatta! df # cancellerà anche #.
Viet,

sto

18

Sembra che @Arcege abbia già risposto alla domanda, ma l'ho fatto d/lper eliminare fino al personaggio l; anche altri personaggi avrebbero funzionato.


3
Questo funziona per cose su tutte le linee.
jasonszhao,

Nota: questo deve essere seguito da Enter.
Eric O Lebigot,

6

wpassa alla parola seguente. lpassa al seguente carattere.

Quindi è d9lper eliminare i prossimi 9 caratteri.


2
Chiudi, lè il tasto freccia destra di Vim, quindi stai effettivamente cancellando giusto. Al contrario, d9heliminerebbe 9 caratteri rimasti.
Walf,
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.