Pergunta

Existe alguma maneira de copiar todas as linhas de arquivo aberto a prancheta na VI editor. Tentei y G , mas ele não está usando a prancheta para armazenar essas linhas.

Assim, é possível?

Foi útil?

Solução

Você deve arrancar o texto para a * ou + registros :

g g " * y L

Explicação:

  • gg para obter o cursor para o primeiro caractere do arquivo
  • "*y para iniciar um comando puxão ao * registo da primeira linha, até que ...
  • G para ir ao final do arquivo

Outras dicas

Use:

: % y +

para arrancar todas as linhas.

Explicação:

  • % para referir-se o próximo comando para trabalhar em todas as linhas
  • y para arrancar essas linhas
  • + para copiar para a área de transferência

Nota :. No Windows, + e * são ver esta resposta

no Mac

  • copiar parte selecionada: selecionar visualmente texto (tipo v ou V em condições normais mode) e tipo :w !pbcopy

  • copiar todo o :%w !pbcopy arquivo

  • passado da área de transferência :r !pbpaste

A área de transferência é tampão + . Para copiar a área de transferência, faça " + y e [o movimento].

Assim, g g " + y G irá copiar o arquivo inteiro.

Da mesma forma, para colar da área de transferência, " + p

Outra forma fácil de copiar o arquivo inteiro se você está tendo problemas usando VI, é apenas por digitar "filename gato". Ele vai ecoar o arquivo para a tela e, em seguida, você pode apenas rolar para cima e para baixo e copiar / colar.

Este é o que eu faço para arrancar todo o arquivo:

ggVGy

(em resposta a @rshdev, e para evitar ter que vim recompilação com + xterm_clipboard per @nelstrom em comentários sobre OP)

há um programa chamado xclip que funciona como putclip no Ubuntu 11:

:%!xclip -sel clip
u

não é instalado por padrão. de instalar, usar:

sudo apt-get install xclip

No Ubuntu 12

que você pode tentar instalar o vim-gnome pacote:

sudo apt-get install vim-gnome

Eu tentei, porque vim --version me disse que teria a bandeira xterm_clipboard desativado (indicado por - ), que é necessário para utilizar a funcionalidade de clipboard.

-> instalar o vim-gnome pacote no Ubuntu 12 também instalou uma versão baseada em console de vim, que tem essa opção ativada (indicada por um + antes do xterm_clipboard flag)

Em Arch Linux

Você pode instalar vim-clipboard , pela mesma razão.

Você pode usar o comando "cat" para arquivo aberto e uso do mouse para copiar

Se você estiver usando Vim no modo visual, o corte padrão e colar chaves também se aplicam, pelo menos com o Windows.

  • Ctrl A meios "Mark todo o arquivo.
  • Ctrl C meios "Copiar a seleção.
  • ESC significa "De-selecionar, por isso a sua próxima tecla pressionada não substitui todo o arquivo: -)

De acordo com Ubuntu terminal (Gnome), pelo menos, a cópia padrão também funciona ( Ctrl Shift C , embora não parece ser um atalho de teclado padrão para select all (excepto ALT E seguido de a ).

Você pode pressionar gg para localizar o cursor para o início do arquivo, em seguida, pressione YG para copiar todo o conteúdo a partir do início ao fim (G localizado) para buffer.good sorte!

Eu tentei alguns dos comandos que as pessoas mencionadas acima. Nenhum funcionou. Então eu tenho de segurar o mais simples de todos eles.

Passo 1: vi <filename>
Passo 2: Botão direito do mouse na barra de título da janela do Putty
Passo 3: Selecione "Limpar scrollback" (para evitar copiar o resto da sua sessão SSH)
Passo 4: Botão direito do mouse novamente e selecione "Copiar tudo para área de transferência".

:%y a Yanks todo o conteúdo em tampão de vim, Pressionando p no modo de comando irá colar o conteúdo arrancou após a linha que o cursor está estando atualmente em.

gVim:

:set go=a

g g V L

Veja :help go-a:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system's global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.

Não havia um conceito de "área de transferência" no vi de Bill Joy, então eu não acho que há um built-in maneira de fazê-lo.

automática de gVim cópia-nada destacou-to-the-prancheta característica é mais fácil ou usar um programa externo via:

Para uso vim I do Cygwin

:%!putclip
u

Talvez Ubuntu tem um aplicativo CLI como putclip ??

Bem, todas essas abordagens são interessantes, porém, como programador preguiçoso uso I arrancar toda a linha usando combinação de número + y

Por exemplo, você tem arquivo de código-fonte com total de 78 linhas, você pode fazer como abaixo:

  1. gg para obter cursor na primeira linha
  2. insert 78 + y -> que puxa 78 linhas abaixo o cursor e atual linha

Se o seu dedos padrão para CTRL-A CTRL-C, então tente os mapeamentos de $VIMRUNTIME/mswin.vim.

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

eu tê-los mapeado para <Leader><C-a> e <Leader><C-c>.

Do copiar o arquivo inteiro dentro do vim ou suas guias

y G 

, em seguida, passar para um guia e colar por

p

e cortar todo o uso de arquivos

d G

Aqui está um comando de mapa para selecionar tudo para o clipboard usando Ctrl + a :

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

Adicionar a sua Vimrc e você está pronto para ir ...

Eu sei dez anos sobre isso deve ser resolvido, mas as duas primeiras respostas não funcionou para mim e assim eu continuei a cavar. Em um Redhat (servidor remoto) - Windows 10 (máquina local), se você não pode selecionar a coisa toda com um mouse, você está preso porque as cópias usuais não funcionam entre o controle remoto e as pranchetas máquina local

.

Assim, para copiar no Linux remoto e para colar no local do Windows, especifique o buffer primário com o * e fazer uma boa dupla puxão

Use g g " * y y .

Eu adicionei a seguinte linha ao meu .vimrc

nnoremap <F5> :%y+<CR>

Isso me permite copiar todo o texto no vim para a área de transferência pressionando F5 (no modo de comando).

Eu não poderia copiar arquivos usando as respostas acima, mas eu tenho massa e eu encontrei uma solução alternativa no Quora.

  1. Alterar configurações de sua sessão PuTTY, vá para registro e alterá-lo para "caracteres imprimíveis". Defina o arquivo de log
  2. Faça um gato do respectivo arquivo
  3. Vá para o arquivo que você definiu no passo # 1 e você terá o seu conteúdo no arquivo de log.

Nota: ele copia todos os caracteres impressos dessa sessão para o arquivo de log, por isso vai ficar grande eventualmente. Nesse caso, exclua o arquivo de log e gato o arquivo de destino de modo a obter o conteúdo desse arquivo em particular copiado em sua máquina.

Eu criei uma função para executar esta ação, coloque-o em seu ~/.vimrc.

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: Se você estiver usando neovim você também precisa de algum gerente da prancheta como xclip. Para mais informações tipo em :h checkhealth neovim

Também é importante mencionar que nem sempre um y simples irá copiar para a área de transferência, a fim de fazer todos os + alimentação cópia wich é "Clipboard Register" tentar definir: :set clipboard=unnamed,unnamedplus. Para mor informações, consulte:. :h unnamed

Aqui mais informações sobre Wikia vim.

Clique no botão esquerdo do mouse, arraste a seção que você deseja copiar e solte. O código fica automaticamente copiados para área de transferência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top