Existe alguma maneira de copiar todas as linhas do arquivo aberto para a área de transferência no editor VI. Eu tentei, yGmas não está usando a área de transferência para armazenar essas linhas.
Então é possível?
vim
editor
keyboard-shortcuts
vi
Xinus
fonte
fonte
Respostas:
Você deve puxar o texto para o
*
ou+
registra :gg"*yG
Explicação:
gg
para colocar o cursor no primeiro caractere do arquivo"*y
para iniciar um comando de arranque no registro*
da primeira linha, até ...G
para ir no final do arquivofonte
"
.:version
vim e procure a+xterm_clipboard
bandeira. Se for precedido por um sinal de menos, você não terá essa funcionalidade. Se for esse o caso, convém compilar o vim por conta própria ou executar o gvim, que geralmente tem esse recurso ativado.Usar:
:%y+
arrancar todas as linhas.
Explicação:
%
para consultar o próximo comando para trabalhar em todas as linhasy
arrancar essas linhas+
copiar para a área de transferência do sistemaNB : No Windows,
+
e*
são equivalentes, veja esta resposta .fonte
:help
para garantir que você esteja realmente no vim.set clipboard=unnamed
, mas isso funcionou muito bem!E850: Invalid register name
:(no Mac
copiar parte selecionada: selecione visualmente o texto (digite
v
ouV
no modo normal) e digite:w !pbcopy
copie o arquivo inteiro
:%w !pbcopy
passado da área de transferência
:r !pbpaste
fonte
pbcopy
é um utilitário para Mac. No Linux,xsel
pode funcionar ouclip
no Windows.:%w !pbcopy
ainda funcionará se o arquivo for maior que a altura do terminal.A área de transferência é buffer +. Para copiar para a área de transferência, faça "+ye [movimento].
Então, gg"+yGirá copiar o arquivo inteiro.
Da mesma forma, para colar da área de transferência, "+p
fonte
Outra maneira fácil de copiar o arquivo inteiro, se você estiver tendo problemas com o VI, é apenas digitando "cat filename". Ele fará o eco do arquivo para a tela e você poderá simplesmente rolar para cima e para baixo e copiar / colar.
fonte
:!cat %
. E para copiar o conteúdo do arquivo programaticamente para a área de transferência no Mac OS::!cat % | pbcopy
Isto é o que eu faço para puxar o arquivo inteiro:
fonte
clipboard
conjunto para copiar o texto arrancado+
.Você pode usar o comando "cat" para abrir o arquivo e usar o mouse para copiar
fonte
reset
antes do terminal, selecione tudo e copie. Isso funciona através dassh
sessão.(em resposta a @rshdev e para evitar ter que recompilar o vim com + xterm_clipboard por @nelstrom nos comentários sobre o OP)
existe um programa chamado xclip que funciona como putclip no Ubuntu 11:
não está instalado por padrão. para instalar, use:
fonte
No Ubuntu 12
você pode tentar instalar o
vim-gnome
pacote:Eu tentei, porque
vim --version
me disse que teria o sinalizador xterm_clipboard desativado (indicado por - ), necessário para usar a funcionalidade da área de transferência.-> instalar o pacote vim-gnome no Ubuntu 12 também instalou uma versão do vim baseada em console, que tem essa opção ativada (indicada por um + antes do sinalizador xterm_clipboard)
No Arch Linux
você pode instalar
vim-clipboard
pelo mesmo motivo.Se você executar o neovim, deverá instalar
xclip
(conforme explicado emhelp clipboard-tool
)fonte
Se você estiver usando o Vim no modo visual, as teclas padrão de recortar e colar também se aplicam, pelo menos no Windows.
No terminal Ubuntu (Gnome), pelo menos, a cópia padrão também funciona ( CTRLSHIFTCembora não pareça haver um atalho de teclado padrão para
select all
(exceto o ALTEseguido por A).fonte
você pode pressionar gg para localizar seu cursor no início do arquivo e, em seguida, pressionar yG para copiar todo o conteúdo do início ao fim (G localizado) para buffer.good luck!
fonte
Eu tentei alguns dos comandos que as pessoas mencionaram acima. Nenhum funcionou. Então peguei o mais simples de todos.
Etapa 1:
vi <filename>
Etapa 2: Clique com o botão direito do mouse na barra de título da janela Putty
Etapa 3: Selecione "Limpar rolagem" (para evitar copiar o restante da sua sessão SSH)
Etapa 4: Clique com o botão direito novamente e selecione "Copiar tudo para a área de transferência".
fonte
Window > Settings > lines of scrollback
para 40000 (também disponível clicando com o botão direito do mouse na barra de título). Também ajuda a usar emcat
vez do vi, uma vez que percorre todo o texto.:%y a
Coloca todo o conteúdo no buffer do vim. Pressionarp
no modo de comando colará o conteúdo puxado após a linha em que o cursor está atualmente.fonte
gVim:
ggVG
Veja
:help go-a
:fonte
Bem, todas essas abordagens são interessantes, no entanto, como programador preguiçoso eu uso o yank all line usando a combinação do número +
y
por exemplo, você possui um arquivo de código-fonte com um total de 78 linhas, pode fazer o seguinte:
gg
para obter o cursor na primeira linhay
-> puxa 78 linhas abaixo do cursor e da linha atualfonte
Não havia um conceito de "área de transferência" no vi de Bill Joy, então não acho que exista uma maneira integrada de fazê-lo.
O recurso copiar automaticamente qualquer coisa destacada na área de transferência do gVim é mais fácil ou use um programa externo via:!
Para o vim de Cygwin, eu uso
Talvez o Ubuntu tenha um aplicativo CLI como o putclip?
fonte
Se seus dedos estiverem no padrão
CTRL-A CTRL-C
, tente os mapeamentos de$VIMRUNTIME/mswin.vim
.Eu os tenho mapeados para
<Leader><C-a>
e<Leader><C-c>
.fonte
Copie o arquivo inteiro dentro do vim ou de suas guias
depois vá para uma guia e cole
e para cortar o arquivo inteiro, use
fonte
Eu adicionei a seguinte linha ao meu .vimrc
Isso permite copiar todo o texto do Vim para a área de transferência pressionando
F5
(no modo de comando).fonte
Aqui está um comando de mapa para selecionar tudo na área de transferência usando CTRL+ a:
Adicione-o ao seu .vimrc e você poderá continuar ...
fonte
Sei que dez anos deveriam ser resolvidos, mas as duas primeiras respostas não funcionaram para mim, então continuei cavando. Em um Redhat (servidor remoto) - Windows 10 (máquina local), se você não puder selecionar a coisa toda com um mouse, ficará preso porque as cópias habituais não funcionam entre as áreas de transferência da máquina remota e local.
Portanto, para copiar no Linux remoto e colar no Windows local, especifique o buffer primário com o *comando ye faça um belo puxão duplo
Use gg" * yy.
fonte
Eu criei uma função para executar esta ação, coloque-a no seu
~/.vimrc
.OBS: Se você estiver usando o neovim, também precisará de um gerenciador de área de transferência como o xclip. para mais informações, digite neovim
:h checkhealth
Também é importante mencionar que nem sempre um simples
y
vai copiar para a área de transferência, a fim de tornar cada alimentação cópia+
wich é "Clipboard Register" tentar set::set clipboard=unnamed,unnamedplus
. Para mor informações, consulte::h unnamed
.Aqui mais informações sobre o vim wikia.
fonte
Você pode usar um atalho, como este:
Isso significa que, quando você pressiona F6 no modo normal, ele copia o arquivo inteiro e o adiciona à área de transferência. Ou você pode digitar no modo normal
:%y+
e pressionarEnter
.fonte
Clique no botão esquerdo do mouse, arraste pela seção que deseja copiar e liberar. O código é automaticamente copiado para a área de transferência.
fonte
vi
jeito nenhum ).Não consegui copiar arquivos usando as respostas acima, mas tenho uma massa e encontrei uma solução alternativa no Quora.
Nota: copia todos os caracteres impressos dessa sessão para o arquivo de log, tornando-se maior eventualmente. Nesse caso, exclua o arquivo de log e escolha o arquivo de destino para que o conteúdo desse arquivo específico seja copiado em sua máquina.
fonte