O vim que acompanha o OSX não possui +clipboardou +xterm-clipboard. Você pode verificar isso com vim --version | grep clipboard. É possível resolver isso com brew install vim --with-client-server.
LondonRob
1
Ou use o MacVim, que oferece uma versão em linha de comando que pode ser simbolicamente conectada ao seu ~/bine, em seguida, ~/bininserida no seu caminho antes do vim e sinônimos normais instalados pelo sistema.
the Tin Man
Com base no que o @ zx1986 escreveu, fiz três coisas: 1) Adicionei o seguinte ao meu ~ / .bashrc para criar o vi / vim no modo terminal do MacVim: alias vi='mvim -v'2) Adicionei o seguinte ao ~ / .vimrc, que mapeia Ctrl + c (não Cmd + c): vnoremap <C-c> "+y3) Maestro de teclado configurado para digitar a sequência de ^cteclas (Ctrl + C) ao executar no terminal (no meu caso iTerm2) Isso possibilita o uso de Cmd + c para copiar texto na área de transferência do OSX para que possa ser colado em outros aplicativos OSX.
Neil Griffin
Respostas:
79
Dependendo da versão do Vim que eu uso, posso usar o +registro para acessar a área de transferência.
Para pessoas com VIM compilados sem + prancheta no link acima é um excelente recurso para dar soluções w / o recompilação VIM
sdjuan
DETALHE MUITO IMPORTANTE !!! Se você possui a versão 7.3 do Vim, isso pode não funcionar para você, mas se você possui a versão 7.4, ele funciona (e às vezes você nem precisa fazer o todo "+ y). E verifique isso apenas escrita> vim no terminal e, em seguida, a versão número é quando você iniciá-lo.
O "+registro existe apenas para o X11 (a menos que você construa o vim com suporte ao + X11, que instalará um servidor X11 XQuartz no OS X), enquanto o OS X não usa o X11 como seu sistema Windows.
nn0p 27/11/16
O que fazer, se ambos - vime macvimtiver + área de transferência. E clipboard=unnamedadicionado a ~/.vimrc? Parece uma dor real, tentei todas as soluções alternativas e, atualmente, tenho que usar o spacemacs, quando eu sei, que terei que usar a área de transferência global :) #
315 Nikolay Fominyh #:
240
Para MacVim e Windows Gvim, basta adicionar o seguinte ao seu ~/.vimrc:
set clipboard=unnamed
Agora todas as operações, tais como yy, De Ptrabalhar com a área de transferência. Não há necessidade de prefixá-los com "*ou "+.
Passei a manhã toda tentando descobrir como separar os comandos y, d e P de ⌘-C e ⌘-V que o MacVim permite para você e finalmente deparei com isso. Com certeza, eu adicionei isso ao meu vimrc quando eu era jovem e ele me frustrou desde então.
Jonathan Dumaine
2
Para quem é novo no MacVim, é utilizável no terminal com a -vbandeira ( mvim -v). Eu tenho o meu alias para vim e mvim.
Pk-nb
3
Como mencionado por @VincentG em seu comentário acima, isso realmente funciona com versões baseadas em terminal do Vim, mas quem usa o tmux no terminal precisará seguir uma das soluções detalhadas aqui: stackoverflow.com/a/11421329/456584
user456584
3
esta deve ser a resposta aceita - contanto que :echo has("clipboard")diz 1, que é o caso de MacVim, e eu tenho um vialias que corre mvim -vem vez
jdsumsion
1
@ Joseph, se :versionmostra -clipboard, a compilação do Vim não suporta o recurso de área de transferência. Eu estava falando sobre o MacVim, que é um aplicativo de interface gráfica.
George V. Reilly
136
Se a área de transferência estiver ativada, você pode copiar uma região selecionada para a área de transferência pressionando "*y
Para ver se está ativado, execute vim --versione procure por +clipboardou -clipboard. Por exemplo, ele não está ativado por padrão na minha caixa 10.5.6:
% que vim
/ usr / bin / vim
% vim --versão
VIM - Vi IMproved 7.2 (9 de agosto de 2008, compilado em 11 de novembro de 2008 17:20:43)
Patches incluídos: 1-22
Compilado por [email protected]
Versão normal sem GUI. Recursos incluídos (+) ou não (-): ...
-clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + comentários
...
Se tivesse sido compilado +clipboard, eu seria capaz de usar o "*registro para acessar a área de transferência do sistema.
Eu baixei a fonte 7.2 e compilei (fácil como tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install), e a área de transferência foi ativada:
% que vim
/ usr / local / bin / vim
% vim --versão
VIM - Vi IMproved 7.2 (9 de agosto de 2008, compilado em 24 de março de 2009 17:31:52)
Compilado por [email protected]
Versão normal com GUI GTK2. Recursos incluídos (+) ou não (-): ...
+ clientserver + clipboard + cmdline_compl + cmdline_hist + cmdline_info + comentários
...
No entanto, mesmo após a compilação, não era possível copiar para a área de transferência ao executar o vim no Terminal.app, apenas no X11.app.
Compilei a versão mais recente com a área de transferência + e agora a área de transferência nativa trabalha com ela como o registro *. Além disso, a configuração "definir área de transferência = sem nome" no seu arquivo .vimrc torna a área de transferência do sistema a típica. Na verdade, usei github.com/adamv/homebrew/blob/duplicates/Library/Formula/… essa fórmula caseira para compilar e compilar.
rado 14/09/10
Hmm, não sei por que o Vim não apareceu no meu Homebrew, mas eu o copiei para / usr / local / Library / Formula, executei o brew install vim e falhou com "ld: library não encontrado para -lruby-static " Estou usando o RVM e estava no 1.8.7. Quando mudei para 1.9.2, o erro foi "ld: library not found for -lruby.1.9.1". A solução foi usar o sistema Ruby executando primeiro o sistema de uso do rvm.
justsee
9
Um pouco mais fácil do que procurar a palavra "área de transferência" no que geralmente é uma longa lista de recursos: faça :echo has("clipboard"). Se mostrar 0, não será compilado. Se mostrar 1, será.
ravron
3
você também pode compilar o vim com a área de transferência usando o homebrew: brew install vim
Anton Koval '
4
Cuidado! Eu tinha uma +clipboardversão, mas tinha instalado o --with-client-serverque habilita +x11, e tentar copiar / colar para x11 no terminal vim no macOS não funcionou :) Eu tive que reinstalar sem +clientserver.
26417 jacwah
96
Você pode selecionar visualmente o texto e digitar :w !pbcopy<CR>
Ou você pode incluir os mapeamentos de teclas abaixo em seu ~/.vimrcarquivo. Eles cortam / copiam texto no modo visual para a área de transferência do sistema operacional.
Você também pode selecionar texto na linha de comando, como: 1,10w! Pbcopy para copiar as linhas de 1 a 10 para a área de transferência. O w é importante junto com o espaço a seguir para manter o texto original no lugar. O link da fonte acima é agora quebrado, mas há uma discussão aqui: vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing
Observe que isso parece funcionar apenas para selecionar linhas inteiras. Parece que não funciona se você deseja selecionar apenas parte de uma linha. stackoverflow.com/questions/16196826/…
Kevin Wheeler
1
@ Kevin Wheeler: você pode tentar com o seguinte comando, que pode resolver a cópia não linear, noremap <silent> <leader> y: <CR>: deixe @ a = @ "\ | execute" normal! vgvy "\ | let res = system (" pbcopy ", @") \ | let @ "= @ a <CR>
dragonxlwang 8/16
38
aspas duplas asterisco ( "*) antes que qualquer comando yank puxe os resultados no buffer de cópia. Isso funciona para Windows e Linux também.
apenas parece emitir um caractere de campainha e nenhum outro efeito para mim #
247/09
3
No X11, "* é PRIMÁRIO" do Vim + é CLIPBOARD e SECUNDARY não recebe um registro nomeado. (Não que alguém usa-lo ...)
ephemient
Perfeitamente. Realmente ajuda, especialmente com a seleção de blocos (ctrl-v).
Sonique
Como a pergunta era especificamente sobre o Mac OS X, é desnecessário acrescentar que ela funciona no Mac "demais".
Paul Tomblin
@PaulTomblin bem, bastante justo :-)
apprenticeDev
26
No macos 10.8, o vim é compilado -clipboardpara usar, "*yvocê precisará recompilar. Felizmente brew install vim, compilaria uma nova versão facilmente para você e será +clipboard.
Algo a ter em mente - de forma bizarra, brew install vimcom atualizações vi, e nãovim . Portanto, você pode ter que alternar as coisas de maneira diferente depois de instalar o vim com o homebrew.
shridharama
18
Selecione visualmente o texto e digite:
ggVG
!tee >(pbcopy)
O que acho melhor do que:
ggVG
:w !pbcopy
Como ele não exibe um prompt: "Pressione ENTER ou digite o comando para continuar"
O Mac (a partir de 10.10.3 Yosemite) vem pré-instalado com um sistema vim que não possui o clipboardsinalizador ativado.
Você pode compilar o vim para si mesmo e ativar essa bandeira, ou simplesmente usar o vim do Homebrew, que está configurado corretamente.
Para ver isso, verifique o sistema de estoque vim com /usr/bin/vim --version
Você verá algo como:
$ /usr/bin/vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 5 2014 21:00:28)
Compiled by [email protected]
Normal version without GUI. Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...
Note o -clipboard
Com o vim do homebrew, você obtém
$ /usr/local/bin/vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI. Features included (+) or not (-):
... +clipboard ...
com a versão de cerveja do vim eu era capaz de fazer o que eu queria: eu destacou as linhas usando Ventão :w !pbcopye funcionou
davidpm4
5
Se o seu Vim não é compilado com pranchetas, você deseja copiar o texto selecionado em vez de linhas inteiras, não deseja instalar o MacVim ou outra GUI, a solução mais simples é adicionar essa linha ao seu .vimrc:
Para usá-lo, basta selecionar visualmente o texto que deseja copiar e depois Control- C. Se você quiser uma explicação completa desta linha, leia " Como copiar para a área de transferência no vim ".
boa resposta ingênua mas a produção breaks se você estiver usando subjanelas verticalmente-split no vim (que é realmente o caso que tenho em mente), ou se o resultado é mais do que uma tela do terminal
ʞɔıu
3
Você está certo, eu não pensei nesses casos. Deixo minha resposta apenas para impedir que outras pessoas dêem respostas semelhantes e não úteis.
Mouviciel 24/03/09
2
O Fakeclip implementa os buffers +e *se eles não são suportados nativamente.
se você tiver a +clipboardopção na instalação do Vim (você pode verificar com :version) e estiver no modo visual, poderá fazê-lo. "+yIsso puxará a seleção para o buffer +que é a área de transferência.
Eu adicionei os seguintes mapas ao meu vimrc e ele funciona bem.
vmap <leader>y "+y
: Com isso eu posso fazer o leader keyseguinte ypara copiar para a área de transferência no modo visual.
nmap <leader>p "+p
: Com isso eu posso fazer o leader keyseguinte ppara colar da área de transferência no modo normal.
PD: No Ubuntu, tive que instalar o vim-gtk para obter a +clipboardopção.
Atualmente, estou no OS X 10.9 e meus esforços para compilar o vim com + xterm_clipboard não me trouxeram nada. Portanto, minha solução atual é usar o MacVim no modo terminal com a opção set clipboard=unnamedno meu arquivo ~ / .vimrc. Funciona perfeito para mim.
Para usuários do Ubuntu, o pacote que você deseja recuperar para usar a área de transferência está cheio de vim. Os outros pacotes (vim-tiny, vim) não incluem o recurso da área de transferência.
vim-full não é mais um nome de pacote ubuntu. o pacote vim padrão (7.3.154) possui um conjunto mínimo de recursos, incluindo -clipboard. A instalação do vim-gtk ou vim-nox fornecerá uma versão + da área de transferência.
Spazm
-1
Copiar para a área de transferência usando o registro '+' ou '*' não está funcionando?
Motivo: Sua versão específica do vim foi compilada sem o suporte da área de transferência. Digite vim --verion no console e você verá -xterm_clipboard . A instalação do vim com pacotes gui resolve esse problema. No ubuntu, você pode fazer isso digitando no shell:
sudo apt-get install vim-gui-common
Agora novamente faça o vim --version no console. Muito provavelmente, você estaria vendo + xterm_clipboard agora !!
Portanto, agora você pode copiar qualquer coisa para a área de transferência usando o registrador + (como "+ yy para copiar a linha atual para a área de transferência)
Copiar e colar tradicional não funciona com os buffers do Vim e pode atrapalhar completamente sua formatação. Por exemplo, copiar 15 linhas de objetos aninhados com Cmd + C e colar com Cmd + V fará com que perca a compreensão do aninhamento. Isto muito provavelmente depende de suas configurações no seu .vimrc e pode ser muito particular
"+y
.+clipboard
ou+xterm-clipboard
. Você pode verificar isso comvim --version | grep clipboard
. É possível resolver isso combrew install vim --with-client-server
.~/bin
e, em seguida,~/bin
inserida no seu caminho antes do vim e sinônimos normais instalados pelo sistema.alias vi='mvim -v'
2) Adicionei o seguinte ao ~ / .vimrc, que mapeia Ctrl + c (não Cmd + c):vnoremap <C-c> "+y
3) Maestro de teclado configurado para digitar a sequência de^c
teclas (Ctrl + C) ao executar no terminal (no meu caso iTerm2) Isso possibilita o uso de Cmd + c para copiar texto na área de transferência do OSX para que possa ser colado em outros aplicativos OSX.Respostas:
Dependendo da versão do Vim que eu uso, posso usar o
+
registro para acessar a área de transferência.O " compartilhamento da área de transferência do Mac OS X " pode ter algumas idéias que também funcionam para você.
fonte
"+
registro existe apenas para o X11 (a menos que você construa o vim com suporte ao + X11, que instalará um servidor X11 XQuartz no OS X), enquanto o OS X não usa o X11 como seu sistema Windows.vim
emacvim
tiver + área de transferência. Eclipboard=unnamed
adicionado a~/.vimrc
? Parece uma dor real, tentei todas as soluções alternativas e, atualmente, tenho que usar o spacemacs, quando eu sei, que terei que usar a área de transferência global :) #Para MacVim e Windows Gvim, basta adicionar o seguinte ao seu
~/.vimrc
:Agora todas as operações, tais como
yy
,D
eP
trabalhar com a área de transferência. Não há necessidade de prefixá-los com"*
ou"+
.fonte
-v
bandeira (mvim -v
). Eu tenho o meu alias para vim e mvim.:echo has("clipboard")
diz1
, que é o caso de MacVim, e eu tenho umvi
alias que corremvim -v
em vez:version
mostra-clipboard
, a compilação do Vim não suporta o recurso de área de transferência. Eu estava falando sobre o MacVim, que é um aplicativo de interface gráfica.Se a área de transferência estiver ativada, você pode copiar uma região selecionada para a área de transferência pressionando
"*y
Para ver se está ativado, execute
vim --version
e procure por+clipboard
ou-clipboard
. Por exemplo, ele não está ativado por padrão na minha caixa 10.5.6:Se tivesse sido compilado
+clipboard
, eu seria capaz de usar o"*
registro para acessar a área de transferência do sistema.Eu baixei a fonte 7.2 e compilei (fácil como
tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install
), e a área de transferência foi ativada:No entanto, mesmo após a compilação, não era possível copiar para a área de transferência ao executar o vim no Terminal.app, apenas no X11.app.
fonte
:echo has("clipboard")
. Se mostrar 0, não será compilado. Se mostrar 1, será.brew install vim
+clipboard
versão, mas tinha instalado o--with-client-server
que habilita+x11
, e tentar copiar / colar para x11 no terminal vim no macOS não funcionou :) Eu tive que reinstalar sem+clientserver
.Você pode selecionar visualmente o texto e digitar
:w !pbcopy<CR>
Ou você pode incluir os mapeamentos de teclas abaixo em seu
~/.vimrc
arquivo. Eles cortam / copiam texto no modo visual para a área de transferência do sistema operacional.fonte: http://drydevelopment.com/blog/vim-pbcopy-on-os-x
fonte
aspas duplas asterisco ( "*) antes que qualquer comando yank puxe os resultados no buffer de cópia. Isso funciona para Windows e Linux também.
fonte
No macos 10.8, o vim é compilado
-clipboard
para usar,"*y
você precisará recompilar. Felizmentebrew install vim
, compilaria uma nova versão facilmente para você e será+clipboard
.fonte
brew install vim
com atualizaçõesvi
, e nãovim
. Portanto, você pode ter que alternar as coisas de maneira diferente depois de instalar o vim com o homebrew.Selecione visualmente o texto e digite:
O que acho melhor do que:
Como ele não exibe um prompt: "Pressione ENTER ou digite o comando para continuar"
fonte
No meu caso, eu apenas tinha que fazer:
visite a solução original em superuser.com
fonte
Se você estiver usando o MacPorts, poderá atualizar o seu VIM para incluir o suporte da área de transferência através de:
Agora você usa o
"+
registro para puxar seu texto diretamente para a área de transferência do Mac. Funciona como um encanto.fonte
Se você estiver no MacOS X:
Em seguida, adicione ao seu .vimrc:
Agora você só precisa estar no vim e fazer
:%y
, para ter todo o conteúdo copiado para a área de transferência.fonte
Use o vim de Homebrew :
brew install vim
O Mac (a partir de 10.10.3 Yosemite) vem pré-instalado com um sistema vim que não possui o
clipboard
sinalizador ativado.Você pode compilar o vim para si mesmo e ativar essa bandeira, ou simplesmente usar o vim do Homebrew, que está configurado corretamente.
Para ver isso, verifique o sistema de estoque vim com
/usr/bin/vim --version
Você verá algo como:
Note o
-clipboard
Com o vim do homebrew, você obtém
Note o
+clipboard
fonte
V
então:w !pbcopy
e funcionouSe o seu Vim não é compilado com pranchetas, você deseja copiar o texto selecionado em vez de linhas inteiras, não deseja instalar o MacVim ou outra GUI, a solução mais simples é adicionar essa linha ao seu .vimrc:
Para usá-lo, basta selecionar visualmente o texto que deseja copiar e depois Control- C. Se você quiser uma explicação completa desta linha, leia " Como copiar para a área de transferência no vim ".
fonte
Eu usei:
Funcionou muito bem.
fonte
Você pode usar o MacVim quando estiver em um Mac para acessar facilmente a área de transferência usando as teclas padrão do sistema operacional.
Também é totalmente compatível com o Vim normal, então nem preciso ter um separado
.vimrc
.fonte
~/bin
para substituir os padrões.comando-C? Isso pelo menos funciona para o vim iniciado no Terminal.app para o texto selecionado com o mouse.
fonte
O Fakeclip implementa os buffers
+
e*
se eles não são suportados nativamente.fonte
Meu principal problema foi a versão OSX padrão do Vim. Instalando-o via homebrew adicionado
+clipboard
à compilação.Você pode verificar com:
para ver se diz
-clipboard
ou+clipboard
.fonte
se você tiver a
+clipboard
opção na instalação do Vim (você pode verificar com:version
) e estiver no modo visual, poderá fazê-lo."+y
Isso puxará a seleção para o buffer+
que é a área de transferência.Eu adicionei os seguintes mapas ao meu vimrc e ele funciona bem.
vmap <leader>y "+y
: Com isso eu posso fazer oleader key
seguintey
para copiar para a área de transferência no modo visual.nmap <leader>p "+p
: Com isso eu posso fazer oleader key
seguintep
para colar da área de transferência no modo normal.PD: No Ubuntu, tive que instalar o vim-gtk para obter a
+clipboard
opção.fonte
no mac, quando qualquer outra coisa parecer funcionar - selecione com o mouse, clique com o botão direito do mouse e escolha copiar. uff
fonte
Atualmente, estou no OS X 10.9 e meus esforços para compilar o vim com + xterm_clipboard não me trouxeram nada. Portanto, minha solução atual é usar o MacVim no modo terminal com a opção
set clipboard=unnamed
no meu arquivo ~ / .vimrc. Funciona perfeito para mim.fonte
O que funcionou para mim na minha
.vimrc
fonte
Para Mac - mantenha pressionada a
option
tecla seguida dectrl V
selecionar o texto.fonte
Shift cmd c - definir o modo de cópia Arraste o mouse, selecione o texto, cmd c para copiar o texto selecionado Cmd v para colar
fonte
Para usuários do Ubuntu, o pacote que você deseja recuperar para usar a área de transferência está cheio de vim. Os outros pacotes (vim-tiny, vim) não incluem o recurso da área de transferência.
fonte
Copiar para a área de transferência usando o registro '+' ou '*' não está funcionando?
Motivo: Sua versão específica do vim foi compilada sem o suporte da área de transferência. Digite vim --verion no console e você verá -xterm_clipboard . A instalação do vim com pacotes gui resolve esse problema. No ubuntu, você pode fazer isso digitando no shell:
sudo apt-get install vim-gui-common
Agora novamente faça o vim --version no console. Muito provavelmente, você estaria vendo + xterm_clipboard agora !!
Portanto, agora você pode copiar qualquer coisa para a área de transferência usando o registrador + (como "+ yy para copiar a linha atual para a área de transferência)
fonte
macvim
Encontro o mesmo problema, após a instalação ainda não funcionar, finalmente encontrei uma maneira de resolver:Tente desinstalar todo o vim primeiro,
brew uninstall macvim
brew uninstall --force vim
e reinstale o macvim
brew install macvim --with-override-system-vim
Então você pode usar
"*y
ou"+y
, não precisaset clipboard=unnamed
fonte
O Command-c funciona para mim tanto no MacVim quanto no terminal.
fonte