2012-03-02 9 views
10

a menudo me encuentro en una situación como esta:YanKing rápido en Vim

line i want to yank 
. 
. 
. 
[cursor position] 

Quiero dar un tirón a la línea y pegar a [cursor position].

Estoy haciendo eso con [n]k, Y, [n]j, p. Eso es mucha mecanografía;). Antes, yo estaba usando:

:[line number]Y 

y luego pegar, pero que no funciona con los números de línea relativos (relativenumber opción).

¿Cuál es la forma más rápida de hacer tales tirones/pegar mientras los números relativos están activados?

+1

Pienso en '[n] k' as ** crawling **. Si rastrea, tendrá que arrastrarse hacia atrás, pero si ** salta **, puede retroceder: navegue en su lista de salto con 'Control + o' para mayores y' Control + i' para más reciente. –

Respuesta

4

Cuando el número de la línea que se conoce para copiar (si es absoluta o relativa), una manera conveniente de duplicar esa línea es utilizar el comando :copy . Por ejemplo, el comando Ex a continuación copia la línea que tiene cuatro líneas arriba y la pega debajo de la actual.

:-4t. 
+0

esto es fantástico. Solo mi curiosidad, ¿qué significa t en este caso? – nXqd

+1

@nXqd: ': t' es simplemente un sinónimo de': copy' (que también tiene una forma abreviada de ': co'). Ejecute ': help: copy' para ver la sección correspondiente en la documentación de Vim. –

5

Voy a tratar esto:?

  • dé un tirón + Introduzca < tipo == significant patten para buscar hacia atrás
  • yy
  • Ctrl +O < = = Volver
  • p
+1

+1 Uso 'CTRL-O' y' CTRL-I' mucho, son increíblemente útiles. – hochl

8

Si la línea está a la vista (antes o después de la posición del cursor), que normalmente sólo la búsqueda de ella (?line i want), tirón, y luego ir `` (volver a la posición anterior) , luego p.

+0

O establezca explícitamente una marca con 'mm' y regrese con' 'm' ('m' es mi identificador de marca temporal ir a). Desconfío de la posición anterior por alguna razón. –

+0

¿hay alguna razón que elija? encima/? –

+0

@AndyRay previous ('?') En lugar de next ('/'), eso es todo. – Manish

5
:/your desired search for the specific line/ y 

o

:N y 

(donde N es el número de línea específico) copiará la línea específica (y que puede ser un rango también). Ahora toca p para pegarlo. De esta manera, no mueve el cursor.

2

Si la línea está fuera de la vista (además de Manish 's answer), me resulta útil para

  • dividir la pantalla escribiendo :sp y luego
  • buscar en la línea de ser un tirón
  • tire del patrón en la parte superior y luego
  • salto a la pantalla inferior utilizando CTRL - w - j donde el cursor aún está colocado (en la misma columna) como lo estaba cuando I :sp iluminó el búfer.
4

Por cierto, si la verdad es que mi intención repetir una línea que he utilizado antes de cualquier parte de cualquiera de los archivos abiertos actualmente, a continuación, simplemente uso el acceso directo ^X^L en modo de inserción después de escribir algunas de la partida caracteres.

Digamos que quiero repetir esta línea, que se repite mucho en mi programa:

for (int i = 0; i < numChildren; i++) { 

Entonces comienza escribiendo for (in y luego acaba de golpear ^X^L y Vim completa para mí. (En realidad, me espera para aceptarlo; si hago ^L otra vez, me muestra la siguiente opción.)

Buscar ^X^L, es muy útil.

:help ^X^L 

PS: envíos como una respuesta por separado, ya que su pregunta original es específicamente sobre "YanKing" y esto es auto-completado, técnicamente.