"+ y não copia para a área de transferência

0

Estou tentando copiar uma parte do texto para a área de transferência do sistema. Primeiro, faço uma seleção visual: selecione " then + then y .

Eu então recebo uma mensagem 7 lines yanked . Quando pressiono p , os dados são colados em vim ; mas, quando estou tentando colar dados para qualquer outro programa - sem resultado. Como resolvo esse problema?

    
por vico 09.08.2015 / 16:48

1 resposta

2

Digite no terminal:

$ vim --version | grep -e version -e +mouse.* -e +clipboard

Idealmente, você tem a versão huge instalada com o recurso de área de transferência, bem como vários recursos de mouse compilados. Apenas no caso, por favor, relate o resultado editando sua pergunta.

O vi / vim usa prancheta (s) diferente (s) da sua GUI normal: isto é, ela possui sua própria área de transferência, portanto se você tentar copiar / colar de um arquivo vim-aberto para qualquer lugar fora do vim com o mouse usando CTRL + x / CTRL + v , você terminará com .... nada.

I) tente usar o mouse (depois disso eu vou responder à sua pergunta)

Abra um arquivo no vim e destaque o texto com o botão esquerdo do mouse pressionado. Clique no texto realçado com o botão direito. Se você não vir uma opção de menu contextual de "cópia" ativada, isso provavelmente significa que você definiu

set mouse=a

em algum lugar na sua configuração do vi / vim. Esta opção permite que você use o mouse nos 4 modos vim mais comuns: normal (com escape), inserir, visual, modos de linha de cmd.

Digite :help mouse em sua sessão do vi / vim (modo normal) se quiser saber mais. Se você tem essa opção ativada, você ainda pode copiar no vi e colar fora do vim com o mouse. Para isso, basta pressionar shift ao destacar seu texto no vi / vim. Seu shell de sessão do vi / vim se comportará como se set mouse=a não tivesse sido definido apenas para a duração dessa tarefa. Isso é chamado de "manipulação xterm" do mouse. Você encontrará essa expressão se decidir ler material técnico sobre isso.

II) usa registradores do modo visual dentro do vi / vim

Existem dois registradores que você pode chamar a partir da linha cmd enquanto estiver no vi / vim, enquanto você tenta copiar algo para depois colá-lo fora do vim. Eu os chamarei de "+ e" + registradores (não seus nomes reais).

  • posicione o cursor no modo visual e destaque o texto
  • Se você puxar texto com "*y , normalmente poderá colar fora do vi / vim, digamos em um arquivo .odt, usando o botão do meio do mouse. O outro registro não é afetado.
  • Se você puxar com "+y , na verdade você puxa e cola do que é chamado de "área de transferência". Nesse caso, você vai estragar tudo o que estava na área de transferência até aquele instante. Para colar fora do vi / vim, basta usar a CTRL + v '.

Nota: Depois de colar, nem registra as mudanças de estado. Eles ainda contêm o mesmo material de antes. Você pode voltar ao vi / vim e colar seu conteúdo com "*p ou "+p (após o cursor) ou talvez apenas p .

Você pode realmente mudar o comportamento acima, fazendo tudo colar na área de transferência. Do :help clipboard do modo vi / vim normal para saber mais sobre a área de transferência. Geralmente ter registros diferenciados acessíveis com "*y ou "+y é extremamente prático, porque quando você quer preservar o que já está na área de transferência, você usa apenas "*y para yank ou "*d para recortar - > sem interrupção para a área de transferência lá!

Se de alguma forma usar "+y ou "+d não funcionar para você, como parece ser o caso, talvez seja porque você NÃO instalou todos os recursos compilados necessários para o seu vim. Em particular, se você não tem o recurso "clipboard", vá em frente e instale o pacote vim-gtk do Ubuntu Software Center, ou:

$ sudo apt-get install vim-gtk

Isso ajusta você bem, junto com add-ons extras para olhar interativamente arquivos escritos em C, Python, latex, Perl, Ruby e outros, sem mencionar o doc html local para o vim se você precisar dele. / p>

... o que você faz se você for fazer qualquer coisa com o vim. ; -)

Se você fizer isso, você pode querer fechar todas as suas sessões vim e talvez até mesmo o seu arquivo .vimrc , embora eu não esteja claro sobre isso. Fazer logout e voltar não vai doer embora.

E isso foi apenas arranhando a superfície do vi ...

EDITAR:

Para a seção I): você pode organizar a cópia automática do registrador X11 "*y ao selecionar com o mouse no modo visual, incluindo set go+=a no arquivo ~/.vimrc .

Para a seção II): Se você tem o recurso de clipboard compilado na sua instalação do vim, você pode mapear a cópia da área de transferência para CTRL + c inserindo :vmap <C-C> "+y em seu ~ / .vimrc. Depois disso, você só precisará destacar seu texto, fazer CTRL + c para copiar para a área de transferência, e CTRL + v para colar em qualquer lugar fora do vi / vim. Não mais "+y necessário aqui neste caso. Este mapeamento específico é válido apenas para o modo visual.

    
por Cbhihe 09.08.2015 / 21:22