¿Cómo reemplazar el texto dentro () con texto previamente eliminado?

9

Supongamos que tengo el texto Fnordeliminado antes y que mi cursor reside en Bla línea:

M:mock(Baz)

¿Cómo puedo cambiar el texto dentro () con el texto previamente eliminado?

Actualmente, a menudo cometo el error al hacer:

  • di( también conocido como "eliminar dentro ()"
  • MAYÚS + P

sin embargo, lo que me deja con el texto exacto nuevamente, ya que el texto eliminado se moverá al registro.

Quiero tener:

M:mock(Fnord)
k0pernikus
fuente
1
@Rich La pregunta proporcionada cubre el caso más general de reemplazar una palabra arrancada. Creo que esta pregunta es un poco más específica y no atrae las mismas respuestas.
k0pernikus
Protip: el 0registro contendrá el último texto extraído. :h quote0
Peter Rincker
1
La misma idea de la respuesta aceptada de la pregunta mencionada se puede aplicar aquí. Con el cursor entre paréntesis, simplemente presione vi)p. Es lo mismo que en esa respuesta, solo con el i)objeto de texto en lugar del objeto de wtexto,
EvergreenTree
1
@ k0pernikus Me temo que tendremos que estar de acuerdo en no estar de acuerdo con eso. Para mí, la parte importante de ambas preguntas es el reemplazo, y no el objeto de texto utilizado para aplicarlo.
Rico

Respuestas:

13

Puede usar la selección visual para seleccionar el texto a reemplazar y luego pegarlo de la siguiente manera:

vi(p

vi(selecciona Baz (porque está encerrado entre paréntesis), ppega Fnord sobre él.

Sin embargo, esto arrastrará a Baz al registro después del pegado, lo que podría no ser lo que desea.

Alex
fuente
10

A menos que especifique un registro, p(o P) usará el último registro que se completó. El registro sin nombre ""contiene el texto eliminado o eliminado más recientemente (a menos que se haya especificado otro registro, por ejemplo, con "ay), pero estos también se "0utilizan "1para eliminar y eliminar o modificar. Ver registros .

Si el último texto fue eliminado y, puede pegarlo desde el 0registro con "0P. Si se eliminó, puede acceder a él con el 2registro con "2P( "1es ahora Baz).

Alternativamente, puede evitar jugar con sus registros y eliminarlos en el registro de agujeros negros"_ :

"_di(P
Steve
fuente
3

Si la instalación de complementos es una opción, puede usar yankstack.vim . Entonces podría retener su flujo de trabajo actual:

Actualmente, a menudo cometo el error al hacer:

  • di (también conocido como "eliminar dentro ()"
  • MAYÚS + P
  • Alt + p - ciclo al tirón anterior
mMontu
fuente
1

Asumiendo que "Fnord" está registrado, puede hacerlo (con el cursor al comienzo de la línea) f(ci(<c-r>a

Christian Brabandt
fuente