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 ( .