Questão Como faço para selecionar todo o texto no Vi / Vim?


Usando a ferramenta VI para editar arquivos de configuração.

Como posso selecionar todo o texto em um arquivo (cerca de 1000 linhas), copiá-lo e colá-lo no Google Docs?


147


origem




Respostas:


A maneira mais simples e rápida é usar: :  %  y  + e depois vá para o Google Docs (ou onde) e cole. Explicação:

  • %  para referir o próximo comando para trabalhar em todas as linhas
  • ypara puxar essas linhas
  • +copiar para a área de transferência do sistema

Outra maneira é g  g  "  +  y  G mas você provavelmente vai admitir que o acima é mais rápido e mais fácil.


128



@Tuxmentat você pode por favor explicar o que cada chave faz em :%y+ - Jas
Esta resposta seria melhor se explicasse o que cada chave faz para ambas as seqüências. - AsksAnyway
Meu melhor palpite: o ':' significa que estamos usando um comando "ex mode" (eu acho). De qualquer forma, é um comando. '%' é um especial especificador de intervalo de linha de comando que especifica o arquivo inteiro. yy yanks tudo, e '+' especifica o registo de prancheta. : help <command> me ajudou a descobrir isso. - Hawkeye Parker
Eu devo estar fazendo algo errado. Eu digito :%y+e eu recebo E488: Trailing characters - johny why
Eu recebo "E850: nome de registro inválido". Segundo método funcionou bem para copiar, mas não chega ao sistema de transferência no Ubuntu 16.04 (para mim, pelo menos --- eu tenho um .vimrc que pode estar afetando as coisas). - EntangledLoops


Muitas respostas dadas também arrancam a seleção, o que eu não estava procurando.

estou a usar ggVG para este fim (precisa ser executado no modo normal). Este comando  seleciona todo o texto dentro do documento.

Eu inclusive remapeei Ctrl + A para este propósito, já que eu realmente não preciso incrementar um inteiro com o atalho (padrão Ctrl + A mapa).

Basta adicionar isso ao seu .vimrc:

map <C-a> <esc>ggVG<CR>

Tem <esc> primeiro, para garantir que o usuário esteja no modo normal.


67



Exatamente o que eu estava procurando, e é bom ver que o Ctrl + A não está ocupado no vim por padrão. Espero que não haja efeitos colaterais. - Nikos Alexandris
Eu pessoalmente uso ggVG, mas gg0vG$ pode ser mais apropriado, pois reproduz melhor a operação Ctrl + A 'normal'. - Sheharyar


Você pode usar cat file e selecione a saída e copie e cole se você precisar colá-lo no seu navegador.

Para o vi, é assim que você pode selecionar todo o texto e gravá-lo em um novo arquivo:

shift v  -- visual mode
shift g -- jump to eof
"*y -- yank select text
:e my_new_file -- create a new file
"*p -- paste into a new file

Em teoria, isso deve funcionar tanto no Linux quanto no Windows - tentei em um Mac, mas não funciona.


35



Para colar no navegador da Web cat file é o caminho a percorrer. o shift v método só copia para o buffer interno do Vi. - Aleksandr Levchuk
não se você usar a área de transferência do sistema que usa o registro * - mas isso funciona apenas no X e ouvi no Windows - então se você precisar do -X - para verificar se o vim tem suporte para isso no vim -: set clipboard + = sem nome
Existe alguma alternativa para fazer isso sem criar um novo arquivo. Se estamos editando ao vivo no servidor, precisamos manter o código de backup na máquina local para que possamos reverter. - Nagama Inamdar
+1 para gato e selecione em massa. Naturalmente, não funcionará para arquivos grandes e não é o método mais fácil de usar. Mas, para copiar pequenos arquivos de script que ficam fora da janela de exibição da tela, é bom o suficiente. - Arnis Juraga


USE ggVG. digite "gg" para ir ao topo do teste Em seguida, digite VG.


13





gg"+yG

ou

gg"*yG

dependendo se + ou * é a área de transferência do sistema. (Em muitos unixes, + é o buffer de seleção do mouse para o clique do mouse e * é a área de transferência do sistema).


6



Eu acho que é o contrário: "* é a seleção e" + é a área de transferência. vimdoc.sourceforge.net/htmldoc/gui_x11.html#x11-selection - Mikel
Você está certo. Eu também sabia disso, mas digitei a coisa errada. - frabjous


Eu estou usando o Vim 7.4 no ambiente CentOS-7. O que me ajudou a selecionar todo o texto é

:%y

Então só p no próximo arquivo onde eu quero uma cópia completa.

Ou 

Você pode usar o comando cat.

cat copyfile > pastefile

Este repo git tem alguns outros comandos úteis também.


4





Para um Mac, use pbcopy (copyboard):

cat file.txt | pbcopy

O conteúdo do arquivo.txt está agora na área de transferência para colar em outro aplicativo (por exemplo, navegador).

Você também pode colar o conteúdo da área de transferência em um arquivo usando o pbpaste:

pbpaste > file.txt

Embora isso não envolva especificamente o vi, ele atinge o mesmo objetivo em um Mac.


3





Se você estiver usando um desktop linux, você pode carregá-lo na área de transferência usando xclip ou xsel. Para algo desse tamanho, você pode querer usar o recurso de upload no google docs.


1





Outra maneira seria:

Você pressiona v tecla no teclado e vire VIM para VISUAL

Em seguida, selecione todo o texto rolando para baixo

^+ INSERIR copiar

MUDANÇA +INSERIR para colar o texto onde quiser no Google Docs.


1





Sem usar o vi você pode fazer upload de texto para o google docs usando sua API e cURL.


0



isso é o oposto do que o OP quer -. - Rápli András