área de transferência do vim e do sistema

9

Posso criar um arquivo, copiar e colar texto com o botão do meio ou shift-insert.

Como copiar texto no vim e colá-lo na área de transferência do sistema?

concha
fonte
às vezes eu uso sed -n5,10ppara imprimir as linhas 5-10, para que eu possa copiar e colar com mais facilidade, sem o vim reagir ao mouse.
Grant16
na verdade, de dentro do vim, o comando parece:!sed -n 5,10p %
grantbow 29/11
Obrigado por todos os comentários e respostas. xclip às vezes é útil, obrigado @ sergiy-kolodyazhnyy. Quando trabalho em máquinas diferentes, às vezes não tenho controle sobre o que o vim está instalado, mas é útil ter as instruções para verificar a resposta do @muru, obrigado @ ashutosh-tripathy. Preciso usar os comandos vim register com mais frequência para lembrá-los quando precisar deles. Como mencionei na pergunta acima, se eu quiser fazê-lo rapidamente e o arquivo for pequeno, o comando dentro do vim será semelhante a:!cat %
grantbow 15/10/18

Respostas:

12

Você precisa ter Vim com o clipboarde xtermclipboardrecursos compilado. No Ubuntu, estes estão disponíveis apenas com os pacotes vim GUI ( vim-gnome, vim-gtk, vim-athena, etc.).

Depois de instalar um desses, você pode copiar (e colar) os registros da área de transferência ( *e +). Deste post muito informativo sobre Vi e Vim :

Para sistemas baseados no X11 (por exemplo, Linux e a maioria dos outros sistemas semelhantes ao UNIX ), existem 2 áreas de transferência independentes entre si:

  • PRIMÁRIO - É copiar na seleção e pode ser colado com o botão do meio do mouse.
  • CLIPBOARD - Isso é copiado (geralmente) ^Ce colado com ^V(É como o MS Windows).

O Vim possui 2 registros especiais correspondentes a estas pranchetas:

  • *usa PRIMARY; mnemônico: s tar é s eleger (para a cópia-on- s eleitos)
  • +usa CLIPBOARD; mnemônico: CTRL + C (para o teclado comum)

Para copiar para um registro, você precede o comando copy ( y) com "e o nome do registro ( *, por exemplo). "*y, Em seguida, o botão do meio para colar, ou "+ye ShiftInsertpara colar.

muru
fonte
3

Uma solução bastante interessante vem dessa questão. Instale o xclip, depois canalize a saída de um comando para o xclip ( cat file | xclip -selection clipboardpor exemplo) e cole-o em qualquer lugar (se estiver no terminal - use Ctrl ShiftV ). Agora, você pode encurtar esse comando para xclip -sel clip, o que não é exatamente aparente na leitura da página de manual ou nos exemplos.

Sergiy Kolodyazhnyy
fonte
2
Outra saída é se você usa o screen ou tmux, junto com este plugin . De qualquer forma, algo precisa ser instalado.
Muru
Qual é a área de transferência real usada no servidor x? Não encontrei nada /dev, mas o texto ainda está em algum lugar, certo?
Sergiy Kolodyazhnyy
Eu sempre presumi que estaria na memória. Essa parece ser uma boa pergunta para Unix e Linux .
Muru
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