2012-03-01 22 views
9

Quiero hacer algo similar a esta pregunta VI (VIM): delete/change right to left? es decir, eliminar desde el final de una línea hasta la última instancia de = en esa línea, que se puede hacer usando dT= con cursor colocado al final de la línea.Vi/vim - eliminar de la línea final, incluido el carácter final

Sin embargo, este y otros comandos de este tipo no eliminan el carácter final de la línea, por lo que tengo que agregar un x a ese comando. No me molesta hacer esto, sin embargo, parece sorprendente que vim no tenga un comando para eliminar del personaje actual. ¿Hay alguno que no haya podido encontrar?

Respuesta

8

si el cursor está en el extremo de la línea, usted podría intentar

F=D 

oh, no se dio cuenta de que PO quiere mantener el '='. luego:

T=D 
+1

T = D = mantendría el – BenjaminGolder

+0

@BenjaminGolder sí, gracias por señalar, no se dio cuenta de que antes. – Kent

+0

¡Perfecto gracias! –

3

Alternativamente, se puede:

set virtualedit=onemore 

Esto le permitirá mover el cursor un characer más allá del final de la línea. Desde esa posición, dT= funcionará como usted espera.

0

Una alternativa es :set virtualedit=onemore, de modo que usted puede hacer: $dT=.

Referencia en :help 've'.

+1

En realidad creo que necesitas '$ l' para moverte al final de la línea más un personaje. – jcollado

+0

hmm, probablemente sí. gracias por corregir – Benoit

0

Un poco más enrevesado, pero más poderoso - No estoy seguro de si tiene la intención de hacer una línea a la vez, o muchas ... use la expresión regular reemplazar.

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. 
Cuestiones relacionadas