Las otras respuestas existentes dependen de la definición de vim y la detección de un bloque. Mi estrategia para este tipo de eliminaciones es usar el c
comando combinado con el f
movimiento y el carácter real para detenerme. Esto realmente eliminará el carácter de detención, pero dado que también fue la última tecla que presionó repetirlo dos veces tiene un costo próximo a cero, y eso lo insertará nuevamente ya que c
cambia al modo de inserción.
Para explicar con ejemplos, para
func1(x|, func2(), y);
el comando c2f))
dará
func1(x)|;
que al principio puede parecer menos elegante que algunas de las otras respuestas, sin embargo, tenga en cuenta que esta estrategia es universal y no depende de ninguna definición de bloque.
Por ejemplo con
<div| class="some-class">text</div>
el comando cf>>
dará
<div>|text</div>
O al editar archivos csv como
2016-11-29,question,vi|.stackexchange.com,10435
el comando cf,,
dará
2016-11-29,question,vi,|10435
A menudo uso esto para eliminar el resto de una cadena, de
printf("Hello world| - a boring example\n");
a
printf("Hello world\|n");
con cf\\
o de
print("Hello world| - a boring example");
a
print("Hello world"|);
con cf""
.
Esto cambia la posición actual a un lugar ligeramente diferente al solicitado, y también cambia al modo de inserción. Pero quería compartir mi solución para eliminar el resto de cualquier cosa.
C);
en este caso particular.