Como copiar para a área de transferência no Vim?

753

É possível copiar para a área de transferência diretamente do Vim? yyapenas copia coisas para o buffer interno do Vim. Quero copiar para a área de transferência do sistema operacional. Existe algum comando no Vim ou você só pode puxar coisas dentro do Vim?

Hari Menon
fonte
140
Por favor, veja a resposta com menos votos que esclarece um fato importante: você deve ter o vim compilado com o recurso + clipboard para que QUALQUER das sugestões abaixo funcione em primeiro lugar! Esse NÃO é o padrão na maioria dos sistemas.
Neil Traft
7
@NeilTraft, algumas respostas sugerem a canalização do vim para programas externos; portanto, a afirmação de que QUALQUER resposta exige + sinalizador da área de transferência está incorreta. Apenas apontando para salvar futuros leitores de confusão.
Hnatt
2
Possível duplicata de Como fazer vim colar da (e copiar para) área de transferência do sistema? (Nota: A outra questão é mais recente, mas tem melhores respostas IMHO, que eu porque eu marcaram este como um joguete)
Martin Tournoij
5
Certifique-se de ter feito isso sudo apt-get install vim-gnome antes de aplicar esses comandos abaixo ou você receberá um erro de registro inválido!
Harnirvair Singh
7
@Harnirvair Para muitos conjuntos de leitores aqui, vim-gnomeprovavelmente é um exagero ou simplesmente não está disponível em seus sistemas operacionais / distros, enquanto eu suspeito vim-gtke, de preferência, vim-gtk3é mais provável que exista e puxe menos dependências, enquanto ainda fornece integração com a área de transferência (pelo menos para os que ainda estão no X11; Não tenho certeza de como tudo isso interage com Wayland).
underscore_d

Respostas:

497

O *registro fará isso. No Windows, +e *são equivalentes. No unix, há uma diferença sutil entre +e *:

No Windows, os registros * e + são equivalentes. Para sistemas X11, porém, eles diferem. Para sistemas X11, * é a seleção e + é o buffer de corte (como a área de transferência). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*é provavelmente o que você deseja na maioria das vezes, então eu o uso *porque funciona como eu esperava nos dois ambientes.

Nas distros do Linux, você precisa instalar vim-gtk(aka gvim) primeiro para obter a funcionalidade da área de transferência. Isso ocorre porque o non-gtk vim geralmente é compilado sem o suporte ao X11. Isso permite que ele seja executado apenas em máquinas de console (geralmente servidores).

E para aqueles confusos sobre como usar registros ao puxar ou colocar, basta escrever "o nome do registro. Então, para copiar algo para a área de transferência, você digita "*ye, em seguida, coloca-o "*p(crédito: Kyle Mathews)

Gabe Moothart
fonte
31
Não funciona no mac osx lion. Depois de pressionar "then *, ele faz aquele barulho que o mac faz quando você não pode fazer algo. Como faço no mac?
Eddy
62
Você também deve garantir que o vim seja compilado com suporte para a área de transferência. O vim padrão no Ubuntu não é. Tente vim --version|grep .xterm_clipboard -oe se for, -então você não tem suporte. Faça o download de uma versão diferente, de acordo com o ubuntuforums.org/showthread.php?t=1686955
Sparhawk
66
Se você estiver usando Linux, você deve se +registrar. Por exemplo, se você deseja copiar três linhas na área de transferência do sistema, use comandos como v3j"+ye, em seguida, cole-os em outro aplicativo, mais em outro VIM. O uso do *registro no Linux pode copiar e colar apenas entre diferentes aplicativos VIM.
Diabloneo 11/09
6
No Linux, o registro * não funciona para copiar e colar externamente.
weberc2
11
weberc2 e diabloneo, o registo * é para a área de transferência de seleção, acessível a partir do botão do meio, não o menu colar ou ^ V
Jim Keener
354

No Mac OSX

  • copiar parte selecionada: selecione visualmente o texto (digite vou Vno modo normal) e digite:w !pbcopy

  • copie o arquivo inteiro :%w !pbcopy

  • colar da área de transferência :r !pbpaste

Na maioria das distribuições Linux , você pode substituir:

  • pbcopyacima com xclip -i -sel couxsel -i -b
  • pbpasteusing xclip -o -sel -cor xsel -o -b
    - Nota: Caso nenhuma dessas ferramentas ( xsele xclip) esteja pré-instalada em sua distribuição, você provavelmente poderá encontrá-las nos repositórios
Brian
fonte
1
+1 Funciona com o Lion, embora vim --versionmostre-clipboard
roplacebo
26
compatível com o vim enviado com o mavericks osx. adicione ao seu .vimrc vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Para usar esse mapeamento, se você deseja copiar, realce o texto no modo visual e pressione Ctrl-c para copiar. Para colar da área de transferência do sistema, pressione Ctrl-v.
Davidtingsu
7
No Linux isso funciona com: w xclip -sel c ou:! W XSEL -b
trve.fa7ad
4
Para Linux Ctrl + C, copie: em ~ / .vimrc, adicione:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy
3
Uma resposta muito mais útil do que a aceita. Obrigado!
Bryce Johnson
165

No seu arquivo vimrc, você pode especificar o uso automático da área de transferência do sistema para copiar e colar.

No Windows, defina:

set clipboard=unnamed

No conjunto Linux (vim 7.3.74+):

set clipboard=unnamedplus

NOTA: Pode ser necessário usar uma versão atualizada do Vim para que funcionem.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Gary Willoughby
fonte
39
Como um adendo à sua observação - você também pode precisar instalar pacotes extras para que isso funcione. Se o seu vim não possui o +xterm_clipboardrecurso (visível quando você executa vim --version). Este foi o meu caso (executando o Kubuntu 12.10). Eu tive que instalar o vim-gui-commonpacote para obter a funcionalidade correta.
12133 Jacob Dalton
4
set clipboard=unnamedobras em Mac OS 10.11.6 (El Capitan) com vim 7,4
Purplejacket
1. Copiar no arrasto 2. mouse selecione, trabalha em Mac Sierra-10.12.6 e vim-versão: 8.0.1800 especificando seguintes comandos em ~ / .vimrc arquivo set mouse=veset clipboard=unnamed
dkb
set clipboard=unnamedtrabalha no MacOS Catalina
Diego Somar 04/02
Você pode atualizar sua resposta. Não funciona no Ubuntu 18.04 com vim 8.0.
Luís de Sousa
124

Use o registro "+para copiar para a área de transferência do sistema (em "+yvez de y).

Da mesma forma, você pode colar de "+para obter texto da área de transferência do sistema (ou seja, em "+pvez de p).

Amardeep AC9MF
fonte
Eu uso "*, mas parece que só há uma diferença em X.
traço-tom-bang
3
@ traço-tom-bang: o +/ *diferença é SELECTIONvs PRIMARYbuffers de cópia (não me lembro qual é qual atm)
Daenyth
2
Sim, estrela é a seleção, mais é a área de transferência.
dash-tom-bang
6
O caractere de aspas duplas serve como seletor de registro no vi e no vim.
Amardeep AC9MF 18/06/2015
1
Dois conjuntos de atalhos a serem lembrados: "+yy(copiar linha para a área de transferência) e "+yy(copiar linha para seleção); "+p(colar da área de transferência) e "*p(colar da seleção). "é selecionar o registro que é o próprio registro interno do vim por padrão (da maneira yye pfuncionaria sem fazer referência a qualquer tipo de registro). PS: Gostaria de saber se existe um caractere para o registro interno do Vim, algo como o "&yyque acontece yypor padrão.
72

@ Jacob Dalton mencionou isso em um comentário, mas ninguém parece ter mencionado em uma resposta que o vim precisa ser compilado com o suporte da área de transferência para que qualquer uma das sugestões mencionadas aqui funcione. O meu não estava configurado dessa maneira no Mac OS X por padrão e eu tive que reconstruir o vim. Use este comando para descobrir se você o possui ou não vim --version | grep 'clipboard'. +clipboardsignifica que você é bom e as sugestões aqui funcionarão para você, enquanto -clipboardsignifica que você precisa recompilar e reconstruir o vim.

gkb0986
fonte
15
Ou, em vez de se compilar, você pode instalar um pacote vim que já foi construído com o suporte da área de transferência. No OS X, Homebrew tem essa: brew install vim. No Ubuntu, você pode usar sudo apt-get install vim-gnome. Em outras distros do Linux (não GNOME), você pode instalar vim-gtkou vim-athena.
Neil Traft
3
Graças, em Arch Linux eu tinha que remover vime instalar gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber
Suas respostas estão explicando por que o puxão não funciona com a área de transferência. Somente com suas informações, eu poderia fazer uma pesquisa no Google melhor e fazê-la funcionar facilmente. E agora está funcionando. Seria melhor se você também incluísse o comentário do @NeilTraft na sua resposta para que as pessoas não precisassem fazer a pesquisa no Google.
Yana Agun Siswanto
No Mac, logo após brew install vimadicionar o set clipboard=unnamed.vimrc. Execute source ~/.vimrcna linha de comando. Em .bash_profile eu adicionei alias vim="/usr/local/bin/vim"e execute source ~/.bash_profile. Agora no vim apenas usar ye pcopiar / colar
Dmitry
59

Resumindo e facilitando para iniciantes,

Para copiar a linha atual, no modo de comando, digite:

"*yy

Para copiar o arquivo / buffer inteiro, no modo de comando, primeiro vá para o início via gge digite

"*yG

Como se observa, isso requer +clipboardfora vim --version, que indicam a disponibilidade de apoio prancheta, -clipboardsignifica não.

ryenus
fonte
1
"*5yydiz 5 lines yankedmas nada na área de transferência? os / x.
Javadba
2
Sim, eu tinha verificado + área de transferência
javadba
nnoremap <leader>c "* em .vimrcfunciona muito bem como uma "cópia" de tipos, seguido de um movimento para agarrar o objeto de texto que deseja copiar para a área de transferência do sistema operacional.
Cpk
Obrigado, você explicou exatamente do jeito que eu precisava.
precisa
3
Eu instalei vim-gtkpara transformar -clipboardem +clipboard, que "+yyestá funcionando.
precisa saber é o seguinte
30

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

instale o vim:

brew install vim

instale a versão gui do vim:

brew install macvim

reinicie o terminal para entrar em vigor.


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.



Método atualizado :

Nunca fiquei satisfeito com o método definido da área de transferência por anos. A maior desvantagem é que isso atrapalha o histórico da área de transferência, mesmo quando você usax a exclusão. Aqui está uma solução melhor e mais elegante.

  1. Copie o texto [intervalo] do vim na área de transferência do sistema. (Dica: use vou Vpara selecionar o intervalo primeiro e digite os dois pontos :para ativar o comando Ex):
    :[line-range]yank +
    por exemplo,
    :5,10y * (copiar / puxar as linhas 5 a 10 para o *registro da área de transferência do sistema )

  2. Cole o conteúdo da área de transferência do sistema no vim em uma nova linha:
    :put +

Nota:

  1. Se você selecionar um intervalo de palavras, o acima não funcionará. use "* y ou " "+ y" para salvar este bloco visual na área de transferência. No entanto, isso é difícil de digitar, ainda estou pensando em alternativas.
  2. : help "* ou : help * + para mais informações
  3. brew info vimpoderá ver outras opções para instalar o vim. Atualmente, não possui outras opções.
anônimo
fonte
--with-override-system-vimdeveria ser--with-override-system-vi
maffo 18/10
Gostaria de tentar fazer isso para evitar a instalação de muitas coisas do Xorg em sistemas mínimos, mas estou perdendo alguma coisa. Recebo "Não é um comando do editor [range] yank +" depois de selecionar no modo v e pressionar ":".
jeremyjjbrown
29

Para Ubuntu - julho de 2018

Use o registro "+ para copiar para a área de transferência do sistema (ou seja, " + y em vez de y ).

Da mesma forma, você pode colar de "+ para obter texto da área de transferência do sistema (ou seja, " + p em vez de p ).

Você também deve garantir que o vim seja compilado com suporte para a área de transferência. Tentar:

vim --version | grep .xterm_clipboard -o 

e se for -xterm_clipboard (um prefixo negativo), você não terá suporte.

Aqui estão algumas instruções para trocar com uma versão funcional do vim que suporta a área de transferência.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autoremove (remove todos os pacotes de dependências estranhas do vim do sistema)
  • $ sudo apt-get install vim-gnome

Verifique novamente com vim --version | grep .xterm_clipboard -oe você pode confirmar que a área de transferência está agora disponível (ou seja, + xterm_clipboard )

Boa sorte.

arcseldon
fonte
3
Você fez o meu dia, ou talvez o meu mês. Depois de trabalhar com o vim sem prancheta no Ubuntu por anos, essa é uma sensação incrível. arcseldon, obrigado !!
evanrmurphy
Além do que foi descrito acima, eu tive que colocar set clipboard=unnamedplusno meu .vimrcarquivo para que o puxão funcionasse. Estou usando o Ubuntu 18.04.
Elijah
23

Não consegui copiar para o sistema da minha área de transferência porque o tinha no meu arquivo ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Mas se você adicionar esta linha a seguir, permitirá que você simplesmente Ctrl+c obtenha o que você selecionou na sua área de transferência.

vmap <C-c> "+y

Discussão original e mais detalhes: Copie o texto do vim com set mouse = a enabled

jcarballo
fonte
3
Não adicionei a linha ao meu .vimrc, mas o link que você forneceu foi muito útil. Se você pressionar SHIFT enquanto seleciona texto no vim, poderá copiar o texto sem entrar no modo visual. Então, obrigado e +1.
Stefan van den Akker 4/11
Troca de turno é o que eu precisava. Funciona também com editores como o terminator que usam Ctrl + Shift + c para copiar enquanto estão no prompt, e foi o que tentei no início. Eu tinha o -xterm_clipboard instalado com o vim.
Anders Elmgren
18

a solução para mim foi instalar o vim adicional que possui a opção de área de transferência: 

sudo apt-get install vim-gnome
alex
fonte
3
Isto é o que eu tinha que fazer para o Ubuntu 16.04. Eu tentei as outras sugestões sem sucesso. Este foi o mais fácil e fiz o que eu esperava com "+ y."
Steven Eckhoff 10/10/16
Funciona como um encanto sem nenhuma alteração no vimrc! ainda válido no Ubuntu 16.04
makerj
A "+ysugestão só funcionou vim-gnome. Usando o Linux Mint 18.2.
Samaursa 28/09
14

Se você estiver usando o GVim, também poderá set guioptions+=a. Isso acionará a cópia automática na área de transferência do texto destacado no modo visual.
Desvantagem: observe que os gerentes avançados da área de transferência (com histórico) receberão neste caso todo o seu histórico de seleção ...

Benoit
fonte
13

Você pode encontrar as respostas aqui Arch Wiki

Para Linux: Antes de tudo, você precisa habilitar a Área de transferência na sua versão vim instalando gvim.


Em seguida, você deve colocar esta linha no seu .vimrcarquivo.

set clipboard=unnamedplus

HOuadhour
fonte
+1, ficou surpreso ao saber que esta etapa agora é necessária. Em toda a minha instalação anterior do Arch, não precisei fazer isso.
21717 Konstantinos
também funcionou no ubuntu 18.04 e rodava no tmux. Obrigado!
James Klein
10

Se o seu vim for compilado sem +xterm_clipboardopção como a padrão no Debian e eu acho que o Ubuntu, você pode canalizar a seleção ou o buffer inteiro para um programa externo que lida com a área de transferência da área de trabalho. Para xclip(que talvez você precise instalar anteriormente), o comando será:w !xclip -sel clip

Hnatt
fonte
1
Obrigado por isso - ele não funcionou para mim no Ubuntu (confirmando que seu palpite está correto) há anos e eu não sabia o porquê. Agora eu posso ver -xterm_clipboardnas bandeiras mostradas quando eu vim --version.
30914 jamesc
Isso me ajudou a encontrar uma boa fonte de suporte para a área de transferência: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc
9

No vim apenas no terminal ubuntu,

pressione shift + drag mousepara selecionar um texto no vim e depois ctrl + shift + cno terminal

depois ctrl + vem outro editor

Supawat Pusavanno
fonte
3
Isso funciona para selecionar apenas o que é visual no vim, e se você quiser selecionar o arquivo inteiro?
Gerep 8/09/16
@ Gerep este método não funciona para a seleção completa de arquivos. é bom selecionar uma seção de texto apenas no terminal vim e onde o texto é exibido na tela do terminal.
você precisa saber é o seguinte
1
Isso copia os números de linha, as bordas do buffer das divisões e tudo o que é visível, em vez de apenas o texto / código.
Zelphir Kaltstahl
9

Se você tiver o xclip, uma maneira fácil de copiar texto para a área de transferência é a seguinte:

  1. Arranque o texto que você deseja copiar. (y comando no vanilla vim)
  2. Digitar :call system("xclip -selection clipboard", @")

:call system()executa um comando do terminal. São necessários dois argumentos, o primeiro o comando, o segundo o que canalizar para esse comando. Por exemplo, :echom system("head -1", "Hello\nWorld")retorna Olá (Com algum preenchimento). echom retorna a saída de um comando, a chamada não.

xclip -selection clipboard apenas copia o texto na área de transferência do sistema, em oposição à área de transferência X padrão, (Acessado pelo botão do meio do mouse).

@"retorna o último texto arrancado. "é o registro padrão, mas você pode usar qualquer registro. Para ver o conteúdo de todos os registros, digite :registers.

John AZ1
fonte
2
Isso é mais robusto, funciona mesmo quando o vim não é compatível com o suporte para a área de transferência e em qualquer sistema operacional. Por exemplo, no Mac, execute :call system("pbcopy",@"). Pode-se vincular esse comando a uma chave.
precisa saber é
funciona bem, mas posso colocá-lo no meu vimrc, funcionará. Não está funcionando para mim.
thenakulchawla 21/04
5

Esta resposta é específica para usuários de MAC.

O VIM padrão disponível no MAC não vem com a opção de área de transferência ativada. Você precisa dessa opção para acessar a área de transferência do sistema.

Para verificar se o seu vim tem essa opção ativada, use o comando abaixo

vim --version

No resultado, você deveria ter +clipboard. Se for -clipboard, seu VIM NÃO tem a opção de acessar a área de transferência do sistema.

Você precisa fazer e instalar o seu VIM com a opção que você precisa. A seguir estão os comandos.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

O acima irá instalar o VIM mais recente com a opção +clipboardativada.

Agora você precisa definir a área de transferência do sistema. Anexe a seguinte linha a~/.vimrc

set clipboard=unnamed

Agora você pode puxar o texto para a área de transferência do sistema. As etapas abaixo explicam como puxar.

  1. No modo de comando vim press v , isso mudará você para o modo VISUAL.
  2. Mova o cursor para selecionar o texto ou as linhas que você precisa copiar.
  3. Press y, isso copiará o texto selecionado para a área de transferência.
  4. Vá para qualquer aplicativo externo e CMD + vcole.

Eu uso o MACBook Pro com o macOS Mojave e os itens acima funcionam nele.

Joseph Kulandai
fonte
4

Talvez alguém ache útil. Eu queria permanecer independente da área de transferência do X e ainda poder copiar e colar algum texto entre dois vims em execução. Esse pequeno código salva o texto selecionado no arquivo temp.txt para cópia. Coloque o código abaixo no seu .vimrc. Use CTRL-c CTRL-v para fazer o trabalho.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt

user4897781
fonte
4
  1. Coloque set clipboard=unnamedno seu vimrc.
  2. Selecione o que deseja copiar no Visualmodo (pressione v para entrar).
  3. Voltar ao Normalmodo (Pressione a tecla [esc]), pressione y para copiar.
  4. Se você deseja colar algo da área de transferência do sistema operacional, pressione p / P no Normalmodo Vim .
BigPa
fonte
4

Sou iniciante no Vim, mas, para copiar todo o texto na área de transferência do sistema (por exemplo, se você quiser colá-lo em um processador de texto ou em outro editor de texto como gedit, mousepad etc.), no modo normal:

ggVGy

ou, mais simplesmente:

:% y

Como sugerido, eu também instalei o vim-gtk e coloquei

definir área de transferência = unnamedplus

no meu .vimrc

e tudo funciona bem

Se você deseja copiar apenas uma parte do texto, use o modo visual (v) , selecione o texto que deseja copiar e pressione y .

Finalmente, sugiro um programa de área de transferência como o Clipman (meu favorito), Clipit, Parcellite ou similar.

(Estou usando o vim 8.0 no Debian Stretch Xfce)

Perdoe-me pelo meu inglês! :-)

Bertrando Goio
fonte
3

Eu tive um problema porque meu vim não suportava a área de transferência :

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

Instalei o vim-gnome (que suporta a área de transferência) e verifiquei novamente:

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

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

Ashutosh Tripathy
fonte
3

Estou lutando com isso há meses até agora no MacOsX usando atalhos de teclado. Eu sei que a pergunta não é sobre o uso de shorts do teclado. Mas isso pode ajudar alguém com a mesma preocupação.

Descobri que se você desmarcar:

Ver -> Permitir relatórios de mouse

no menu Terminal, você poderá copiar para a área de transferência usando

command + c

novamente.

VAI'
fonte
2

Eu escrevi uma linha simples no meu .vimrc para que a cópia funcione. Espero que isso ajude alguém. Infelizmente, meu vim não está instalado com o suporte da área de transferência, portanto, nenhuma dessas sugestões funcionou para mim. Basicamente, cole esta linha no seu .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Se você quiser ler detalhes sobre o que isso faz, leia sobre isso no meu blog.

songz
fonte
1
Comprador, cuidado. No mac, isso tem efeitos estranhos.
azatar 12/02
isso parece não copiar nada para a área de transferência quando usado conforme as instruções (no linux ubuntu 16.04, sem suporte à área de transferência) e, se vários arquivos forem abertos em uma sessão vim, fechará a guia onde as ações foram executadas (seleção visual e Cc )
Calocedrus
2

Para alguns teclados internacionais, pode ser necessário pressionar "+ Spacepara obter uma" .

Então, nesse caso, você teria que pressionar "Space+you"Space*y

Arthur F
fonte
2

Caso você não queira usar nenhuma interface gráfica para o vim e preferir ficar com o emulador de terminal, pode haver uma abordagem muito mais simples para esse problema. Em vez de usar o puxão ou algo assim, primeiro dê uma olhada na documentação do terminal que você usa. Eu tenho lutado com o mesmo problema (tentando usar + clipboard e xclip e assim por diante) e, no final, verificou-se que, no meu emulador de terminal, basta pressionar Shift e selecionar qualquer texto que você deseja copiar. É isso aí. Muito simples e sem necessidade de mexer na configuração. (Eu uso urxvt por sinal).

alagris
fonte
1

para OSX, como as respostas 10342 acima esclarecidas, você precisa se certificar de que o vim suporta o recurso de área de transferência, disse que aquele que vem pré-enviado com o OSX NÃO suporta a área de transferência e que, se você executar brew install vim , funcionará.

Exceto que a execução do vi ainda fará com que você execute a versão pré-enviada do OSX, e não a que você instalou do brew.

para superar isso, eu simplesmente aliastei meu comando vim para a versão brew, não a padrão OSX:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

e agora eu sou de ouro

abbood
fonte
1

Minha solução foi colocar a seguinte linha em .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

O script copia a linha selecionada (através do modo visual) ou o conteúdo do arquivo (se nenhum estiver selecionado) na área de transferência usando Ctrl + y. Estou usando o Manjaro Linux, se isso importa.

Matheus Baldissara
fonte
1

Estou no mac osx (10.15.3) e novo no vim. Achei isso tão frustrante e todas as respostas aqui muito complicadas e / ou não se aplicam à minha situação. Acabei fazendo isso funcionar de duas maneiras:

  1. mapeamento de chave que usa pbcopy : funciona na versão antiga do vim que acompanha o mac.

    Adicione vmap '' :w !pbcopy<CR><CR>ao seu ~ / .vimrc
    Agora você pode selecionar e pressionar visualmente ''(dois apóstrofos) para copiar para a área de transferência

  2. Instale a versão mais recente do vim para que eu possa acessar a solução mais recomendada em outras respostas:

    brew install vim
    alias vim=/usr/local/bin/vim(adicione isso ao seu ~ / .bashrc ou equivalente)
    Agora você pode selecionar e clicar visualmente "+yypara copiar para a área de transferência

Dharam
fonte
solução muito boa!
ABD
0

selectingcom a ajuda do mousee right-click copyfuncionou no meu caso.

Eu não queria que os números das linhas fossem incluídos, então :set nonumberantes copying.

Akash
fonte
como você pode fazer isso no nerdTree
ji-ruh
Isso não tem nada a ver com o vim e é exclusivamente uma cópia baseada em terminal para a área de transferência (X).
Carlo Wood
Eu não tenho certeza @ ji-ruh
Akash
0

Nada acima funcionou para mim no meu laptop Windows.

Ctrl+ Cfoi bom para copiar .. mas eu precisava Shift+ Insertpara colar!

(Um bom motivo para sempre obter um laptop onde Insertsempre pode ser acessado sem pressionar uma tecla secundária)

SherylHohman
fonte
0

Shift+ Ctrl+ C se você estiver no modo gráfico do Linux, mas primeiro precisará selecionar o que precisa copiar.

insira a descrição da imagem aqui

prosti
fonte