tutorial seleccionar pegar linea copiar busquedas buscar borrar archivo vim editor motion

seleccionar - Eliminar desde el cursor hasta el final de parenthetical(etc.) en vim



vim linux (2)

Digamos que tengo esta línea de texto en vim:

(foo bar (baz) qux) ^

y mi cursor está en el espacio entre foo y bar como se indica. A menudo encuentro que, en situaciones como esta, quiero eliminar todo el lado derecho de la expresión externa entre paréntesis (es decir, a la derecha de mi cursor), mientras que el lado izquierdo está intacto. Es decir, me gustaría terminar con:

(foo)

Por lo general, lograría esto con dt) ("eliminar hasta ) "), pero la adición de un paréntesis anidado complica las cosas: ese comando me dejaría con (foo) qux) . También podría usar d2t) , pero preferiría no tener que contar manualmente el número de paréntesis anidados. También podría usar di) , pero eso elimina todo el interior de los paréntesis, dejándome con () .

¿Hay un movimiento de vim con la conciencia de equilibrio de los movimientos modificados de i y a pero que es relativo a la posición actual del cursor?


Puedes usar el movimiento ]) con d .

d])


mxF(%d`x

Romperlo:

mx

Ponga una marca x (elija la letra que desee)

F(

Buscar anterior ( personaje

%

Saltar a juego

d`x

Eliminar de aquí para marcar x

Eso funciona para su caso específico; No estoy seguro de lo general que es. Si el anterior ( no está en la línea actual, use ?(<return> lugar de F( .

EDITAR :
No mencioné d]) porque no lo sabía.

Mi solución no funcionará para este caso:

( (before) foo (after) ) ^

porque salta al más cercano ( , no al cercado más cercano ( .