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