Como copiar as linhas selecionadas para a área de transferência no vim


Respostas:


107

SHIFTVcoloca você no modo de seleção de linhas. Em seguida, "*ypuxa as linhas atualmente selecionadas para o *registro que é a área de transferência. Existem alguns registros diferentes, para finalidades diferentes. Consulte a seção selection and drop registerspara obter detalhes sobre as diferenças entre *e +registros no Windows e Linux.


10
No Linux, + é a área de transferência global, * é a área de transferência de seleção, enquanto no Windows ambos mapeiam para a área de transferência global.
Mohnish de

74

Se você estiver no Linux e estiver usando um VIm versão 7.3.74 ou superior (a versão que é instalada no Ubuntu 11.10 em diante satisfaz isso), você pode fazer

set clipboard=unnamedplus

que colocará o texto puxado na área de transferência global e permitirá que você cole da área de transferência global, sem ter que usar nenhum registro especial. Ao contrário da solução da ldigas, isso também funcionará em versões não-gui do VIm.


8
Isso só funciona se eu instalar o vim-gnomepacote em vez de vim.
dan-klasson

4
@ dan-klasson: esta opção requer um vim que foi compilado com suporte para área de transferência. Você pode verificar se este é o caso digitando vim --version | grep "+xterm_clipboard".
BenC

Isso parece funcionar para copiar em outros programas não-vim, mas quando eu entro no modo de inserção no vim e uso "shift + insert" para colar da área de transferência, apenas as duas primeiras linhas são coladas ... Eu instalei o vim-gnome ; estou faltando alguma coisa?
t2k32316

2
Se você estiver no macOS, provavelmente precisará usar clipboard=unnamed( vim.wikia.com/wiki/Accessing_the_system_clipboard )
streof

13
set guioptions+=a

irá, ... uhmm, resumindo, sempre que você selecionar / puxar algo, coloque-o na área de transferência também (não no do Vim, mas no teclado global do sistema de janelas). Dessa forma, você não precisa pensar em colocar as coisas em um registro especial.


2
//, A quais sistemas operacionais e / ou versões do Vim esse conselho se aplica?
Nathan Basanese,

10

Para GVIM, pressione vpara entrar no modo visual; selecione o texto e clique Ctrl+Insertpara copiar a seleção para a área de transferência global.

No menu, você pode ver que a tecla de atalho é, "+you seja, segure a tecla Shift, pressione ", +depois solte Shift e pressione y(complicado em comparação a Shift + Insert).


Por que essa resposta não é popular? :(
Ankit Shubham

6

Se você está usando o vim no MAC OSX, infelizmente ele vem com uma versão mais antiga e não está de acordo com as opções da área de transferência. Felizmente, o homebrew pode resolver esse problema facilmente.

instale o vim:

brew install vim --with-lua --with-override-system-vim

instale o gui verion do vim:

brew install macvim --with-lua --with-override-system-vim

reinicie o terminal para ter efeito.

acrescente a seguinte linha a ~ / .vimrc

set clipboard=unnamed

agora você pode copiar a linha no vim com yy e colá-la em todo o sistema.


//, acabei de testar isso no OSX 10.12.3 e funcionou corretamente depois que instalei o Vim mais recente e a versão da GUI mais recente do Vim, como você recomendou aqui. Obrigado, @anonymous.
Nathan Basanese

4

Instale "xclip" se você não ...

sudo apt-get install xclip

O Xclip coloca os dados na área de transferência "seleção / realçada" que você clica com o botão do meio para colar em oposição a "ctrl + v"

Enquanto estiver no vim, use os comandos ex:

7w !xclip

ou

1,7w !xclip

ou

%w !xclip

Em seguida, clique com o botão do meio para colar em qualquer outro aplicativo ...


4

Se o vim for compilado com suporte para área de transferência, então você pode usar o "*ysignificado: puxar o texto visualmente selecionado para o registro *('*' é para área de transferência)

Se não houver suporte para área de transferência, acho que a única outra maneira é usar Ctrl+Insertdepois de selecionar visualmente o texto no vim.


3

Eu adicionei a seguinte linha ao meu .vimrc

vnoremap <F5> "+y<CR>

Isso permite que você copie o texto selecionado para a área de transferência pressionando F5. Você deve estar no modo visual para que isso funcione.


1
Adicione a ~/.vimrcObrigado, isso é muito melhor.
jaggedsoft

2

Adicione o seguinte código ao seu .vimrc:

if has('clipboard')
    if has('unnamedplus')  " When possible use + register for copy-paste
        set clipboard=unnamed,unnamedplus
    else         " On mac and Windows, use * register for copy-paste
        set clipboard=unnamed
    endif
endif
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.