visual how blocks all vim editor range vi yank

how - Vim tirando del rango de líneas



vim select copy (7)

El :help index Vim describe g como:

|g| g{char} extended commands, see |g| below

Desplácese hacia abajo (o :help g ) para obtener una lista.

Soy un desarrollador de C # que recientemente decidió ampliar mi conocimiento de las herramientas disponibles para mí. La primera herramienta que he decidido aprender es Vi / Vim. Todo ha ido bien hasta ahora, pero hay un par de preguntas en las que parece que no puedo encontrar la respuesta:

  1. Digamos que quería tirar una variedad de líneas. Sé que hay muchas formas de hacerlo, pero me gustaría hacerlo por número de línea. Pensé que sería similar a cómo funcionan los comandos sustitutos, algo así como 81,91y . ¿Hay alguna forma de hacer esto?

  2. Estoy un poco confundido sobre el comando g en modo normal. Parece hacer una gran cantidad de cosas y realmente no puedo determinar qué hace el comando g en su núcleo. Estoy confundido sobre si es o no un comando de movimiento o un tipo de "capturar todo" para otros comandos que se ejecutan en el modo normal. ¿Puede alguien explicar esto o señalarme una referencia que da una buena explicación del comando g ?


El comando G va a un cierto número de línea, si va acompañado de un valor de conteo. 81G te pone en la línea 81.

El comando y se puede combinar con un movimiento, como G Entonces, para tirar todo hasta la línea 91, puede usar y91G .

Juntos obtienes:

81Gy91G

Ve a la línea 81, luego jala mientras vas a la línea 91.


La mejor solución sería ingresar al "modo visual", presionando v. Y después de seleccionar líneas simplemente cópielas presionando y. Luego pegue las líneas copiadas presionando p.


También me gusta usar la opción de número de línea relativa de vim, lo que significa que puedo ingresar:

:-10,-7ya a

para tirar el texto en el buffer nombrado a.

NB Al especificar A se agregará lo que está tirando al contenido actual del búfer a.

No olvide que también puede copiar bloques de texto y mover bloques de texto también con los comandos similares:

:-10,-7co .

significa copiar las cuatro líneas de texto 10 líneas arriba a debajo de la línea actual, y

:-10,-7mo .

significa mover las cuatro líneas de texto 10 líneas arriba a debajo de la línea actual.


También puede copiar las líneas actuales a su ubicación actual del cursor usando ''t''.

:81,91t.<enter>

Esto pegará las líneas 81-91 debajo de la línea donde está el cursor.

Aprendí esto de http://vimcasts.org, que es un excelente recurso en VIM.


Yank líneas 81-91

:81,91y<enter>

Si a tus dedos no les gusta encontrar las teclas : y , esto también funcionaría (pasa a la línea 81, tira 11 líneas)

81gg11yy

Mi único uso de g es 5gg . Para ir a la 5ª línea. 22gg : 22ª línea. Como dijo jimbo, en realidad solo es un modificador para algunos otros comandos.

Para completar, ( http://vim.wikia.com/wiki/Power_of_g ) explica mucho de cómo funciona g en modo comando.


g no hace nada por sí mismo. Es uno de los dos metacomandos que contiene un grupo de comandos no relacionados.

z es otro comando así.