desenv-web-rp.com

vim cortar e colar não funciona no Stretch / Debian 9

Atualizados aqui alguns servidores VM para o Debian 9.

Agora, ao usar ssh, não podemos copiar e colar entre terminais remotos.

O cursor parece estar fazendo os movimentos e marcando o texto, embora de uma maneira mais engraçada/diferente do habitual, mas nada é copiado para a área de transferência ao executar o comando C/command-V ou copiar e colar no respectivo menu .

Também tentamos fazer os movimentos do mouse com Shift e outras combinações de teclado, sem resultados positivos.

Isso está acontecendo no OS/X, como Sierra e El Capitan, e no Windows, usando também os terminais mobaXterm.

A situação se deve à consciência do vim de ter um mouse.

Após outras perguntas no Stack Overflow, criei /etc/vim/vimrc.local com set mouse="r" e set mouse="v; não deu certo.

Finalmente configure set mouse="" no mesmo arquivo, com algum sucesso moderado.

No entanto, também não funciona bem 100% do tempo. O que mais pode ser feito?

35
Rui F Ribeiro

A solução é, de fato, definir a opção mouse=a para mouse=r.

Problema ao definir isso no /usr/share/vim/vim80/defaults.vim como a resposta aceita diz, é que ela será substituída a cada atualização. Pesquisei muito tempo e terminei neste: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

A solução da primeira maneira é usar arquivos .vmrc locais e configurá-los lá. Para que você possa criar um .vimrc local (~/.vimrc) para cada usuário e defina suas opções lá. Ou crie um em /etc/skel para que seja criado automaticamente para cada novo usuário que você criar.

Mas quando você usa arquivos .vmrc locais, é necessário definir todas as opções, porque se houver um local .vimrc, a defaults.vim não é carregado! E se não houver local .vimrc todas as suas configurações estão sendo substituídas de defaults.vim.

Eu queria uma configuração global para todos os usuários, que carregasse as opções padrão e depois adicionasse ou substituísse os padrões com minhas configurações pessoais. Felizmente, existe uma opção para isso no Debian: O /etc/vim/vimrc.local será carregado após o /etc/vim/vimrc. Assim, você pode criar esse arquivo e permitir que os padrões sejam carregados, impedir que sejam carregados novamente (no final) e, em seguida, adicionar suas opções pessoais:

Por favor, crie o seguinte arquivo: /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(Observe que $VIMRUNTIME usado no snippet acima tem um valor como /usr/share/vim/vim80/defaults.vim.)

Se você também deseja habilitar o "antigo comportamento de copiar/colar", adicione as seguintes linhas no final desse arquivo:

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction
39
I-GaLaXy-I

Uma maneira de eliminar o vim da percepção do mouse parece estar comentando a configuração do mouse.

No /usr/share/vim/vim80/defaults.vim Comentei a detecção específica do mouse como em:

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(nesses arquivos de configuração do vim ", está iniciando um comentário).

A alteração nos permitiu copiar e colar novamente sem problemas.

Eu concordo com os comentários de que essa não é a solução ideal, pois, de fato, foi substituída por qualquer atualização, a menos que o arquivo de configuração esteja protegido (ou desviado). Na época, e devido a especificidades de uma versão do pacote ou da configuração dos servidores em que eu trabalhava, era o único que funcionava. Como tal, deixo esta resposta aqui e ela deve ser usada apenas como uma solução de último recurso.

26
Rui F Ribeiro

A documentação do Vim para a opção mouse diz

O manuseio xterm dos botões do mouse ainda pode ser usado mantendo a tecla Shift pressionada.

11
Stefan

Você pode desativar isso sem alterar os arquivos do sistema criando /etc/vimrc.local e inserindo o seguinte:

set mouse=
3
Geoffrey

Muitas pessoas sugeriram :set mouse=a mas descobri que apenas :set mouse=r permite copiar e colar no Vim no Debian 9. Boa sorte!

2
David Yeager