Arranque o arquivo inteiro


126

Costumo escrever algo no gVim e preciso copiá-lo e colá-lo em outro aplicativo.

Existe uma maneira fácil de puxar o arquivo inteiro? Eu costumo fazer algo assim

ggVG"+y

(Vá para o topo, modo de linha visual, vá para o fundo, puxe)

Mas existe uma maneira melhor que eu estou perdendo?

Respostas:


201

Eu uso a seguinte instrução: :%y+


6
O que o + faz, por favor?
VoY

5
Este é um registro relacionado à área de transferência. O mesmo que o OP usou em sua pergunta. => :h :y,:h registers
Luc Hermitte

5
@ VOY: Você precisa ter compilado a propriedade Clipboard no Vim para obter esse trabalho "+ clipboard". Significa "tudo puxa para uma área de transferência externa em um gerenciador de janelas". Essa propriedade não é de fato, mas vem com alguns vims gráficos aparentemente de fato, como o gVim. Por favor, corrija-me se estiver errado (apenas notei isso quando tive que usar o ianque no Windows gVim para não ter certeza, é claro, mas acredito que essa seja a propriedade).
hhh

8
Se o registro + não estiver funcionando para você no ubuntu 11.04+, tente instalar o gVim (apt-get install vim-gnome). Isto irá fornecer a propriedade + área de transferência para a versão terminal do vim bem
adharris

3
Eu costumava fazer, gg"+YGmas nunca gostei porque perdi a linha original em que estava. Isto é perfeito!
verboze

56

ggyG (vá para a primeira linha, puxe para a última linha)

Edit: Ah, área de transferência do sistema. Não sai exatamente dos dedos, mas:gg"+yG


1
Obrigado, isso funciona para mim, não:% y +. Mas como colo no localhost a partir do controle remoto? :)
valk

1
Então, basicamente, esse comando vai até o topo do documento e faz alguma coisa, puxar para o final do documento? O que "faz aqui?
Geoyws 17/09/14

1
@Geoyws "diz que você deseja trabalhar com um registro. "+é um registro vinculado à área de transferência do sistema. "+yGcoloca tudo até a parte inferior do arquivo nesse registro. :help "+
Annika Backstrom

15

Uma solução funcional no antigo vi está :r filenameno novo arquivo.


5
Mesmo que essa não seja exatamente uma resposta para a pergunta, foi a resposta para a minha . Obrigado.

2
Eu preciso adicionar um zero para colá-lo no início do arquivo::0r filename
Stefan van den Akker



6

Eu uso a seguinte instrução: :%y.


... não sobre janelas diferentes no gerenciador de janelas. + No final puxa-lo para área de transferência externa (aparentemente o que as tentativas op para fazer)
hhh


3

Ou simplesmente no seu .vimrc:

nmap <silent> <F5> ggVG"+y

Então você pode usar apenas uma tecla :)


3

No OSX:

ggVG
!tee >(pbcopy)

O que acho melhor do que:

ggVG
:w !pbcopy

Como ele não exibe um prompt: " Press ENTER or type command to continue"


1

:%ysem +trabalhos em todo o sistema, se você estiver usando o neo-vim (nvim).

Isso nos permite evitar esticar os dedos para +- realmente tornando esse atalho melhor que ggyG.


0

Dependendo da frequência com que você faz, basta mapear uma chave para isso e, opcionalmente, adicionar ao vimrc

:nnoremap <F5> :%y

ou

:nnoremap <leader><whatever> :%y

ou qualquer chave que você saiba que é segura e mais rápida - adicione a uma fonte de mapeamentos ou o que for. A vantagem disso ggyGé que ele não está movendo o cursor (mais rápido) e, para manter a posição do cursor, é necessário adicionar um<Ctrl-o><Ctrl-o>

As pessoas geralmente esquecem que os comandos são baseados em sessão, a menos que no vimrc. Muitas vezes sei quando vou fazer muita coisa, mas não preciso disso como padrão e apenas:[mode]remap <whatever> <whatever>

Posso fechar e reabrir o vim, se precisar.

Se <Ctrl-A><Ctrl-C>funcionar para você, você está usando o mswin.vim em sua fonte e perdendo o poder das operações de incremento <Ctrl-a>e decremento <Ctrl-x>(entre outras coisas). Comecei no Windows e parei de usar o mswin.vim há muito tempo. Pessoalmente, acho que é melhor grunhir o Vim da maneira certa e adicionar as muletas que você realmente precisa: P


2
Bem-vindo ao Stackoverflow. O editor suporta a formatação , portanto, considere agrupar seus exemplos de código (como os comandos que você usou) em backticks ( `) ou blocos de código.
Jan Kundrát 16/04

-1

Está sujo, mas você não precisa usar a tecla Shift e apenas 3 teclas diferentes, que podem ser mais rápidas:

gg1111yy

(Supondo que o arquivo tenha menos de 1111 linhas)


-2

No Windows, geralmente faço apenas CTRL-A, CTRL-C para copiar tudo para a área de transferência do Windows ... Não é possível ficar mais fácil do que isso!

Estou usando um gvim 7.1 padrão no site ...

(BTW: também funciona no meu mac com o MacVim e essa engraçada mac-key + A, mac-key + C)


1
O Windows gvim adiciona alguns atalhos extras que não estão nas outras versões, para tentar ajustá-lo melhor aos usuários do Windows. ctrl + a, ctrl + c, são dois exemplos desses.
Davr

9
Ctrl-c tem um significado bastante diferente para o usuário do terminal.
Xiong Chiamiov 17/09/09

certeza, mas quando em janelas, fazer como as janelas fazer :) Basta dizer, gvim e MacVim honrar a plataformas atalhos da área de transferência padrão - não há nada de errado com o uso deles tanto ....
Daren Thomas

4
É melhor não usar o vim, se você quiser usar atalhos como esses.
VoY

1
CTRL-A incrementa o número sob o cursor.
Alexcp
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.