Como copiar texto puxado para o prompt de comando VI

118

Quero saber se há alguma maneira de colar o texto arrancado na janela de comando. Por exemplo, se eu puxei uma palavra e quero grep em algum local, não posso simplesmente colar a palavra usando 'p'. No entanto, se eu copiar para a área de transferência, Shift-Insert irá colar a mesma coisa.

Existe algum ajuste disponível que me permita colar o texto arrancado no prompt de comando do vim?

Estou usando o gvim no Windows.

Canopus
fonte

Respostas:

174

tente usar

<ctrl+r>"

onde "significa registro padrão.

Mykola Golubyev
fonte
7
Observe que isso também funciona no modo de inserção normal, não apenas na linha de comando.
user55400
25
Se você usar em *vez de ", obterá o conteúdo da área de transferência do sistema (o que pode ser útil).
dash-tom-bang
40

<C-R>"Irá colar o buffer padrão. Como alternativa, você pode usar q:para abrir um buffer para o próximo comando. experimentar:help q:

soulmerge
fonte
10
Puta merda, q:está além de incrível
Hubro
19
  • certifique-se primeiro de que está no modo normal, pressionando Esc
  • uma vez no modo normal, pressione :
  • em seguida, use a combinação do teclado ctrl-re digite"

Observação: se você estiver puxando uma linha completa contendo o caminho relativo do arquivo, a alimentação da linha também será colada ... ou seja, :! touch src/bash/script.sh^M

IRÁ criar um "caminho de arquivo engraçado" contendo o "\ r" se você não remover o último ^M...

Torre
fonte
13

Para evitar a etapa de puxar, se o cursor estiver sobre a palavra que deseja usar no Ex, use:

 <ctl-r><ctl-w>

Isso evita puxar para colar na linha de comando; em vez disso, cola-se a palavra sob o cursor diretamente na linha de comando. Por exemplo:

:%s/<ctl-r><ctl-w>/foo/g
Gregory
fonte
5

Se for apenas uma palavra que deseja copiar, você pode usar <C-r><C-w>

  1. Coloque o cursor sobre a palavra
  2. Então você pode digitar algo como :vim <C-r><C-w> *
SysCoder
fonte
3

Você pode ir para a área de transferência usando o *buffer nomeado. Por exemplo, isso copiará a linha atual para a área de transferência:

"*yy

Portanto, você pode copiar uma linha usando isso e, em seguida, colá-la com shift-insert na linha de comando.

Da mesma forma, você pode colar da área de transferência assim:

"*p
Nathan Fellman
fonte
2

A área de transferência está +, pelo menos no Mac. Então, você escreveria "+yypara puxar uma linha para a área de transferência e "+pcolar. Embora você sempre possa usar Command-C e Command-V.

abc
fonte