Estou tentando copiar e colar algum texto do vim. Estou fazendo v para entrar no modo visual e, em seguida, y depois de selecionar meu bloco.

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

Resposta

O seguinte funcionará apenas se vim --version indica que você tem +xterm_clipboard recurso. 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 da área de transferência “normal” (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 deste buffer usando o botão do meio.

Observe que "* e "+ funciona nos dois sentidos. Então, se você selecionou algum texto em outro aplicativo, você pode colá-lo no vim usando "*p e se você copiou algum texto (usando, digamos, Ctrl-C), você pode colar no vim usando "+p.

Comentários

  • @Tshepang não está funcionando com massa. o que devo fazer?
  • @RahulPatil não sei; talvez faça uma pergunta separada, talvez em Superusuário (uma vez que é ‘ uma ferramenta do Windows, seria mais bem-vindo lá).
  • @RahulPatil – se estiver usando o putty, você está editando o arquivo em um servidor remoto, não em sua máquina local. Geralmente o servidor remoto ‘ não sabe sobre a área de transferência em sua máquina local. Se você estava usando um desktop Linux, então você pode ssh com X forwarding (desde que tenha instalado as bibliotecas X no servidor), mas como o putty roda no Windows, você não ‘ tem X executando para que você possa ‘ t encaminhá-lo.
  • Olá a todos, Como digitar ” + y? devo digitá-lo no modo Visual ou no modo de comando? Coisa boba, mas não consigo descobrir.
  • @AlindBillore: No modo de comando. Literalmente, pressione as teclas shift', shift= e y (nem todos de uma vez, um após o outro, exceto os turnos, é claro).

Resposta

Se você estiver usando vim> = 7.3 .74, então você pode realmente colocar isso em seu vimrc:

set clipboard=unnamedplus 

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

Eu achei esse comportamento bastante irritante, porém, como comandos como d colocar o texto em que operam no buffer padrão, o que significa que eu não poderia fazer um dd rápido e colar uma linha da internet , por exemplo.

Comentários

  • + é um registrador de área de transferência
  • Em relação ao seu último ponto, dd significa ” cortar uma linha “, então esse seria o comportamento esperado. No caso raro, quando você quiser para realmente deletar uma linha no esquecimento, "_dd resolverá o problema.
  • também como @HamishDowner anotou em sua resposta: O seguinte funcionará apenas se vim --version indica que você tem +xterm_clipboard recurso. Caso contrário, você terá que instalar pacotes extras ou recompilar o vim com esse recurso adicionado.
  • ê l>

Resposta

Mantenha pressionado o 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 a área de transferência no vim.

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

Comentários

  • @LoopSpace para seleções de várias linhas também copiará os números de linha quando set nu estiver ativado . Então, você provavelmente gostaria de alternar os números de linha com algum atalho ou executar o comando :set nonu antes de cada seleção
  • No MAC, mantenha pressionada a tecla de opção e selecione o texto com o cursor do mouse
  • ‘ não funciona para mim usando vim 8.0 + gnome-terminal
  • Solução não compatível com termos multipane como tmux.
  • Isso não copia para a área de transferência, copia para a primária .Veja a distinção no artigo do Clipboard Arch Wiki .

Resposta

Acho os comandos "+gP e "+y muito difíceis de usar. Portanto, remapeei Ctrl-Y para puxar para a área de transferência e Ctrl-P para colar da área de transferência. Adicione a .vimrc

nnoremap <C-y> "+y vnoremap <C-y> "+y nnoremap <C-p> "+gP vnoremap <C-p> "+gP 

Resposta

Quando verifiquei meu vim não era compatível com 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 “+ y e” + p respectivamente.

Resposta

Deixa pra lá, Encontrei a resposta – está escrita nos menus do vim.

"+y 

Muito intuitivo.

Comentários

  • Você está usando gvim?
  • @ nozimica- yeah
  • Isso ‘ s também disponíveis no vim em execução em um xterm ou emulador de terminal semelhante no X (se o vim for compilado com o recurso +xterm_clipboard).

Resposta

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

Além disso, se você selecionar o texto no terminal, depois clique com o botão do meio, ele será colado da área de transferência do X11.

Comentários

  • Por algum motivo não ‘ t funciona. Basta selecionar com o modo visual, copiar com ctrl-shift-C e colar em outro aplicativo usando Ctrl-shift-V? O texto não ‘ não é copiado para mim.
  • @ ripper234: isso não funciona se você estiver usando o gvim. Como o crazy2be disse, esta funcionalidade vem do seu emulador de terminal.
  • @ ripper234: 1) É uma funcionalidade fornecida pelo seu emulador de terminal (o gnome-terminal por exemplo fornece), 2) Ctrl + Shift + V é para colar no terminal , os aplicativos de GUI ainda usam Ctrl + V como de costume. Eu ‘ edito a resposta para torná-la mais clara.
  • se você usar o controle shift-mousedrag – selecione o texto, copiar e colar de uma janela de buffers torna-se fácil.

Resposta

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

Em seguida, cole em outro programa com CTRL + v.

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

insira a descrição da imagem aqui

Comentários

  • Isso não funciona.
  • resposta criativa

Resposta

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

Para habilitá-lo, você deve compilar o vim você mesmo ou instalar uma versão do vim que vem com ele pré-habilitado. 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 o + e * e deve funcionar.

Resposta

Só para acrescentar, se alguma coisa funcionar, tente trocar 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 para o guake enquanto está acessível no terminal do gnome.

Resposta

Para Ubuntu 14.04 E Acima:

  • Basta selecionar o texto que deseja copiar. Em seguida, clique no botão de rotação central com o mouse e vá para a área de transferência

  • E faça o mesmo lá também (clique no botão central de rolagem com o mouse).

Está 100% funcionando em ambos vim e tail no Ubuntu.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *