2012-03-01 9 views
9

Voglio fare qualcosa di simile a questa domanda VI (VIM): delete/change right to left? ie cancellare dalla fine di una riga all'ultima istanza di = in quella linea, che può essere fatto usando dT= con il cursore posizionato alla fine della riga.Vi/vim - cancella dalla riga finale incluso il carattere finale

Tuttavia questo e altri comandi simili non eliminano il carattere finale della linea, quindi devo aggiungere un x a tale comando. Non mi dispiace farlo, tuttavia sembra sorprendente che Vim non abbia un comando da eliminare dal personaggio corrente. C'è uno che non sono stato in grado di trovare?

risposta

8

se il cursore si trova alla fine della linea, si potrebbe provare

F=D 

oh, non si accorse che OP vuole mantenere il '='. quindi:

T=D 
+1

T = D = voluto mantenere il – BenjaminGolder

+0

@BenjaminGolder sì, grazie per aver ricordato, non si accorse che prima. – Kent

+0

Perfetto grazie! –

3

In alternativa, è possibile:

set virtualedit=onemore 

questo vi permetterà di spostare il cursore di una characer oltre la fine della linea. Da quella posizione, dT= funzionerà come previsto.

0

Un'alternativa è a :set virtualedit=onemore, tale che è possibile eseguire: $dT=.

Riferimento :help 've'.

+1

In realtà penso che sia necessario '$ l' per spostarsi alla fine della riga più un carattere. – jcollado

+0

hmm, probabilmente si. grazie per la correzione – Benoit

0

Un po 'più complicato, ma più potente - Non sono sicuro che se si intende eseguire una riga alla volta, o molti ... utilizzare la sostituzione di espressioni regolari.

single line: 
^    # go to beginning of line 
:s/=[^=]*$/=/ # remove everything after = 

whole file: 
:%s/=[^=]*$/=/gc # replace every instance in file, with prompts. remove c for no prompt.