Como copiar texto do vim para um programa externo?

78

Estou tentando copiar e colar algum texto do vim. Eu estou fazendo v para entrar no modo visual, então y quando eu selecionar meu bloco.

Parece que copia o texto para a área de transferência do vim, porque p irá colá-lo. Mas em outro programa (por exemplo, Chrome), clique com o botão direito em > colar e não cole o texto correto. Como copio o texto para a área de transferência correta?

    
por ripper234 03.05.2011 / 16:51

10 respostas

58

As informações a seguir funcionarão somente se vim --version indicar que você tem o recurso +xterm_clipboard . Caso contrário, você terá que instalar pacotes extras ou recompilar o vim com esse recurso adicionado.

Na verdade, existem duas opções para isso:

"+y

copia para o buffer "habitual" da área de transferência (para que você possa colar usando Ctrl + V, clique com o botão direito e selecione "Colar", etc.), enquanto

"*y

copia para a seleção X11 - você pode colar a partir desse buffer usando o clique do meio.

Observe que "* e "+ funcionam nos dois sentidos. Portanto, se você selecionou algum texto em outro aplicativo, poderá colá-lo no vim usando "*p e, se tiver copiado algum texto (usando, digamos, Ctrl-C), poderá colá-lo no vim usando "+p . / p>     

por 04.05.2011 / 00:39
30

Se você estiver usando o vim > = 7.3.74, então você pode colocar isso no seu vimrc:

set clipboard=unnamedplus

O qual usará automaticamente o buffer + (a área de transferência do sistema) por padrão. Então, para puxar (copiar), você apenas usa o comando normal y , etc.

No entanto, achei esse comportamento bastante irritante, pois comandos como d colocavam o texto em que operam no buffer padrão, o que significava que eu não conseguia fazer um dd rápido e colar uma linha da internet , por exemplo.

    
por 04.05.2011 / 01:19
21

Mantenha pressionada a tecla shift e selecione o texto com o cursor do mouse.
O texto será copiado para a área de transferência.

Isso também funciona para colar da área de transferência no vim.

Para ficar claro, isso funciona para vim em execução em um terminal como xterm .

    
por 03.05.2011 / 21:08
10

Acho muito difícil usar os comandos padrão "+gP e "+y . Então eu remapeei Ctrl-Y para puxar para a área de transferência e Ctrl-P para colar da área de transferência. Adicione isto a .vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
    
por 28.10.2011 / 00:31
5

Não importa, eu encontrei a resposta - está escrito nos menus do vim.

"+y

Muito intuitivo.

    
por 03.05.2011 / 16:53
3

Apenas para adicionar uma resposta não-específica ao vim: Você pode usar Ctrl+Shift+C para copiar para a área de transferência do sistema no Ubuntu (se a funcionalidade for fornecida pelo emulador de terminal, o gnome-terminal fornece um). Ctrl+Shift+V pastas para outra janela de terminal,% regularCtrl+V pastas para um aplicativo GUI.

Além disso, se você selecionar o texto no terminal e, em seguida, clicar com o botão do meio, ele será colado na área de transferência do X11.

    
por 04.05.2011 / 00:49
2

Por padrão, se você instalar a versão light do vim, você não terá o recurso +xterm_clipboard em ( vim --version | grep xterm ), que é necessário para usar os registros * e + fora do vim.

Para habilitá-lo, você deve compilar você mesmo ou instalar uma versão do vim que venha pré-ativada. Eu usei o vim-gnome: sudo apt-get install vim-gnome . Se você executar vim --version | grep xterm , verá que agora é +xterm_clipboard .

Agora, tente copiar para + e * e isso deve funcionar.

    
por 07.01.2014 / 20:09
2

Quando eu verifiquei o meu vim não estava apoiando a área de transferência:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Eu instalei o vim-gnome e verifiquei novamente

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Agora posso copiar e colar usando "+ ye" + p respectivamente.

    
por 09.06.2018 / 13:25
1

Mantenha pressionada a tecla SHIFT e o mouse selecione o texto para copiá-lo.

Em seguida, cole outro programa com CTRL + v .

Funciona no terminal no meu Ubuntu 16.04. Não tenho certeza sobre gvim e outros sistemas.

    
por 22.01.2017 / 18:13
0

Apenas para adicionar, se alguma coisa funcionar, tente mudar o terminal que envolve o vim (se você estiver usando o vim do terminal). Descobri que, por exemplo, a área de transferência está inacessível pelo guake enquanto é acessível pelo gnome-terminal.

    
por 18.09.2013 / 16:06