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
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.
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.
shift'
,shift=
ey
(nem todos de uma vez, um após o outro, exceto os turnos, é claro).