2009-10-19 19 views
20

A menudo necesito pegar algo en varias líneas adyacentes, en la misma posición o en posiciones similares. Es un dolor tener que mover el cursor de regreso al principio de los contenidos pegados cada vez, al pasar a la siguiente línea. ¿Cómo puedo pegar (como en, el comando 'p') sin mover el cursor? O bien, ¿cómo puedo hacer que el cursor vuelva rápidamente a donde estaba antes de pegar?Pegar en Vim sin mover el cursor

Respuesta

20

La forma más segura sin destruir un registro es hacer lo siguiente:

p`[ 

Si desea crear un acceso directo, sólo tiene que utilizar ninguna de las funciones del vim mapa que son adecuados para usted, por ejemplo:

noremap p p`[ 
+0

¿Hay una manera de utilizar las marcas de forma más segura, por lo que no destruye algo que sucede que tiene en ese registro? Tal vez algún otro registro que normalmente no se utiliza en absoluto, no estoy seguro de lo que está disponible o es habitual. – aehlke

+0

Lo siento, lo que quise decir en mi comentario fue, me gustaría guardar eso como un comando preestablecido por lo que es menos de escribir. – aehlke

+0

Ver la respuesta revisada. – carl

-4

'k'? (como en la flecha hacia arriba)

Si usa 'p' para pegar texto debajo de la línea actual, el cursor estará en la primera línea del contenido pegado. Al escribir 'k' en el modo de comando, se pasa a la línea sobre el inicio del contenido pegado.

+0

Por favor, vuelva a leer mi pregunta. – aehlke

+0

p pega después del cursor. no tiene que estar en la siguiente línea. depende de cómo seleccionó el bloque para copiar (v frente a shift-v). -1 –

+0

que no es OP quiere – mko

10

Cada vez que tengo una secuencia de pasos para repetir varias veces, grabo una macro, que es trivialmente fácil en Vim. El método general es

  1. Coloque el cursor donde desea realizar el primer cambio.
  2. Escriba qx para comenzar a grabar las pulsaciones de teclas.
  3. Haga la primera edición.
  4. Mueva el cursor a la posición donde debe comenzar la segunda edición.
  5. Pulse q nuevamente para salir de la grabación.
  6. Escriba @x para reproducir la macro y realizar la próxima edición. El comando @ toma una cuenta para que pueda repetir la edición tantas veces como quiera con un comando.

Así, en su caso, toda la secuencia de pulsaciones de teclas para grabar la macro podría ser

qxp`[jq 

y [email protected] para reproducir cinco veces para un total de 6 cambios.

Tenga en cuenta que el carácter después de la primera q es un registro para registrar la macro y puede ser cualquier letra, no solo x. Solo tenga cuidado de que sus macros no introduzcan texto en el registro que está grabando actualmente, ¡hace un verdadero desastre!

Las macros pueden ser arbitrariamente largas y complejas. Pueden contener comandos del modo Ex e incluso llamar a otras macros.

+0

Esta es una gran explicación, gracias. Voy a experimentar con esto. – aehlke

+0

¿Puede profundizar en este bit -> "Solo tenga cuidado de que sus macros no arranquen el texto en el registro que está grabando actualmente en"? Gracias –

1

Puede volver rápidamente a donde estaba antes de pegar presionando CTRL-o. Esto en general retrocede a la posición anterior del cursor.

Estoy pegando líneas de todo un documento grande a una de 3 marcas (moviendo las líneas para que queden debajo de los encabezados). La forma más rápida que he encontrado es:

'ap 

seguido de Ctrl-O

Cuestiones relacionadas