it-swarm-es.tech

¿Cómo tirar de una línea en particular sin mover el cursor en vim?

Por ejemplo

alt text

¿Cómo puedo tirar y pegar la Línea 4 solo en la Línea 12 sin tener que mover el cursor a la Línea 4?

alt text

40
Lazer

Si el cursor ya está en la línea 12, entonces un simple

: 4y 
 P 

lo hace por mi.

53
frabjous

Qué tal esto: el cursor está en la línea 11, estás en modo "vi".

:4co.<return>

Aparentemente también puedes hacerlo con un patrón:

:/^Yank/co.<return>

Puede usar "mo" (mover) en lugar de "co" (copiar) para mover la línea, en lugar de tirar y poner.

10
Bruce Ediger

Prueba esto:

:4,4y  
P
9
Louis Salin

Tratar:

:4co11

Puedes usar un argumento de 0 para pegar en la línea 1. Esto también funcionará con rangos:

:m,n co k

copiará las líneas m a través de n a la línea k+1. Además, no importa dónde se encuentre en el búfer. El comando move, m, funciona de manera similar.

8
gvkv

Esto debería hacerlo:

:4,12y
p
k
2
Umang

Más corto:

:1t. copia la primera línea debajo de la actual.

Con rangos: :1,4t. copia las líneas 1 a 4 (inclusive) debajo de la actual.

También es posible con números de línea relativos:

:-1t. copia la línea anterior debajo de la actual.

En tu ejemplo :4t-1 copiaría la cuarta línea debajo de la línea deseada.

Nota: :t es sinónimo de :co[py] comando.

2
Erwin Rooijakkers

Otros ya han mencionado el método más directo para hacerlo, que es :4y, pero quiero agregar dos notas al respecto que pueden ser útiles:

Uno, si escribe :help range aprenderá todo sobre el uso de rangos para aplicar a comandos de estilo Ex. MUY útil en muchos casos, y mucho más versátil que usar números de línea. Por ejemplo, si desea tirar de la primera línea que comienza con "tirar" después del inicio del documento (incluso si está en la primera línea), use :0/^yank/y. La parte más poderosa de los rangos es la capacidad de combinarlos, por ejemplo, :./^Chapter/+50?Pete?d significa "Encuentra la siguiente línea para comenzar con el Capítulo de Word (buscando hacia adelante desde la línea actual), luego salta 50 líneas hacia adelante, busca hacia atrás el Word Pete y elimina la primera línea en la que lo encuentres". Excepto que en realidad no mueve el cursor, simplemente HACE lo que le dices.

(He usado este tipo de especificación de rango para automatizar la creación de documentación complicada que implica buscar el nombre de la función debajo del cursor, luego buscar la siguiente línea que dice "Descripción" y tirarla a un registro específico ... etc.)

El otro consejo es que debes saber sobre el salto. Tipo :help jump-motions para obtener más información, pero la forma en que se relaciona aquí es que puede saltar a la línea 4, tirar de él y luego VOLVER con 4Gyy'' (o use teclas de retroceso en lugar de apóstrofes para volver a su posición inicial exacta, en lugar de simplemente la misma LÍNEA en la que comenzó).

2
Wildcard

Basándose en respuesta de Erwin Rooijakkers , esto copia la línea 4 debajo de la línea 11, independientemente de dónde esté su cursor:

:4t11
0
Lorin Hochstein