Cómo copiar texto tirado al símbolo del sistema VI

118

Quiero saber si hay alguna forma de pegar texto tirado en la ventana de comandos. Por ejemplo, si he sacado una palabra y quiero grep en algún lugar, no puedo simplemente pegar la palabra usando 'p'. Sin embargo, si lo copio al portapapeles, Shift-Insert pegará lo mismo.

¿Hay algún ajuste disponible que me permita pegar texto extraído en el símbolo del sistema de vim?

Estoy usando gvim en Windows.

Canopus
fuente

Respuestas:

174

tratar de usar

<ctrl+r>"

donde "representa el registro predeterminado.

Mykola Golubyev
fuente
7
Tenga en cuenta que esto también funciona en el modo de inserción normal, no solo en la línea de comando.
user55400
25
Si usa en *lugar de ", obtendrá el contenido del portapapeles del sistema (que puede ser útil).
dash-tom-bang
40

<C-R>"Pegará el búfer predeterminado. Alternativamente, puede usar q:para abrir un búfer para el siguiente comando. tratar:help q:

fusión de almas
fuente
10
Santa mierda, q:es más que impresionante
Hubro
19
  • primero asegúrese de que está en modo normal presionando Esc
  • una vez en modo normal, presione :
  • luego use la combinación de teclado ctrl-ry luego escriba"

Nota: si está tirando de una línea completa que contiene la ruta relativa del archivo, el salto de línea también se pegará ... es decir :! touch src/bash/script.sh^M

CREARÁ una "ruta de archivo divertida" que contiene "\ r" si no elimina el último ^M...

Torre
fuente
13

Para ahorrarle un paso de tirón, si su cursor está en la palabra que desea usar en Ex, use:

 <ctl-r><ctl-w>

Esto evita tirar para pegar en la línea de comando; en cambio, uno pega la palabra debajo del cursor directamente en la línea de comando. P.ej:

:%s/<ctl-r><ctl-w>/foo/g
Gregorio
fuente
5

Si es solo una palabra que desea copiar, puede usar <C-r><C-w>

  1. Pon tu cursor sobre la palabra
  2. Entonces puedes escribir algo como :vim <C-r><C-w> *
SysCoder
fuente
3

Puede tirar al portapapeles usando el *búfer con nombre. Por ejemplo, esto copiará la línea actual al portapapeles:

"*yy

Entonces puede copiar una línea usando esto y luego pegarla con shift-insert en la línea de comando.

Del mismo modo, puede pegar desde el portapapeles de esta manera:

"*p
Nathan Fellman
fuente
2

El portapapeles +, al menos en Mac. Entonces escribirías "+yypara tirar de una línea al portapapeles y "+ppegarla. Aunque siempre puedes usar Command-C y Command-V.

A B C
fuente