Copiar e colar no xfce4-terminal adiciona 0 ~ e 1 ~

105

Eu uso o xubuntu 14.04, 64 bits. De vez em quando, quando tento colar algum texto no terminal xfce4, em vez do texto esperado a ser colado, ele é cercado por 0~e 1~, como:

0~mvn clean install1~

O texto deveria ser mvn clean install- eu verifiquei isso colando o conteúdo em vários outros aplicativos (gnome-terminal, gedit e outros). Todo aplicativo cola corretamente o conteúdo, exceto o xfce4-terminal. Não encontrei nenhuma referência para isso na internet (infelizmente, é difícil pesquisar texto com caracteres especiais no google.com ...). Por que isso acontece?

botismarius
fonte
Como você está colando? Clique do meio, ou algo mais?
Celada
11
Eu tentei todos os métodos: clique no meio, clique com o botão direito e escolha a opção colar, ctrl + shift + v. Quando os caracteres 0 ~ e 1 ~ aparecem, não importa qual método de colagem eu uso.
Botismarius

Respostas:

144

O problema é que seu terminal está no modo de pasta entre colchetes, mas não parece suportá-lo corretamente. O problema foi corrigido no VTE, mas o xfce4-terminal ainda está usando uma versão antiga e não mantida.

Você pode tentar desativar temporariamente o modo de colar colchetes usando:

printf "\e[?2004l"
kyrias
fonte
4
Se você nem sempre pode reproduzi-lo, pode estar executando algum programa que ativou o modo de colar entre colchetes e depois travou, portanto, não foi possível desativá-lo antes de sair.
Kyrias
4
Incrível, obrigado! Estou lutando com esse problema há mais de um ano. É possível desativar completamente esse "modo de colar entre colchetes"? BTW, quem implementa coisas tão loucas? ;)
Adam Romanek 13/04
4
isso depende do seu terminal. E é um recurso realmente útil, pois permite que os aplicativos saibam se algo foi digitado ou colado. Por um lado, o weechat, um programa de IRC, o usa para perguntar se você deseja enviar pastas com várias linhas, o que não seria possível sem o modo de colar entre parênteses, pois não haveria como saber se o usuário digitou as linhas ou não.
Kyrias
11
Como posso descobrir qual programa está interferindo no modo de colagem entre colchetes?
aviggiano
3
Para distribuições baseadas no Ubuntu, você pode tentar instalar a versão corrigida do pacote '
vte
78

Meu problema ocorreu devido a uma sessão do bash mal fechada. Então, executar o comando resetno meu terminal resolveu-o imediatamente.

petobens
fonte
2
Isso funcionou para mim.
AFP_555
E funcionou para mim!
Tomd
Aconteceu com o Ubuntu 16.04, usando o terminator. redefinir funcionou!
user1270710
Meu terminador estava fazendo o mesmo, também executando o Ubuntu 16.04. Correndo resetna minha conexão ssh consertou.
Marcello Grechi Lins
23

Eu tive o mesmo problema, ocorre depois que eu uso o vi.

O meu foi resolvido adicionando set t_BE= ao meu .vimrcarquivo.

Para referência , é isso que t_BE faz:

t_BE ativar o modo de colar entre colchetes

ivan
fonte
7
Essa foi exatamente a causa, obrigado! No meu caso, começou quando eu atualizei para o VIM 8
rgerganov
11
você poderia explicar qual conjunto t_BE = faz e por que resolve o problema?
Francesco Boccardo
7

Esse comportamento ocorre quando o emulador de terminal está preso no modo de colar entre colchetes .

Isso normalmente acontece quando um aplicativo é encerrado de maneira suja (trava ou está com erros).

Outra razão para o fenómeno de ocorrer frequentemente é um erro em versões mais antigas de TEV (TEV é o widget emulação de terminais sob gnome-terminale xfce4-terminale muitas mais), que é desencadeada por determinadas acções em determinadas utilidades, tais como alternando os painéis em comandante da meia-noite .

Para verificar se esse bug foi corrigido no emulador de terminal baseado em VTE que você está executando: Execute echo -ne '\e[>c', isso inserirá alguns caracteres como se você os tivesse digitado. Se o número do meio for 3602maior ou maior, o bug VTE antigo acima mencionado não estará mais presente para você. Se o número for menor que isso, o VTE ainda será afetado e ficará travado no modo de pasta entre colchetes com mais frequência do que deveria.

Para verificar se um determinado emulador de terminal está corrigido em uma determinada distribuição Ubuntu, verifique suas dependências em packages.ubuntu.com . libvte-2.91-0é bom. libvte-2.90-9só é bom se a versão atual desse pacote for 0.36.2 ou mais recente e libvte9for ruim. Em particular, xfce4-terminalé de buggy no Xenial e corrigido no Zesty.

Egmont
fonte
1

Isso pode não se aplicar diretamente ao seu problema, mas achei que esse sintoma provavelmente foi causado pelo meu editor de escolha 'mcedit' (Midnight Commander)

Para aliviar o problema do bug, adicionei a seguinte função ao meu arquivo .bashrc:

### vvv 'function mcedit' is a fix-up for the ~0/~1 paste problem
function mcedit() { command mcedit $@ ; printf '\e[?2004l' ; }

Então 'source .bashrc'

Agora, toda vez que executo 'mcedit', ele adiciona automaticamente o 'printf "\ e [? 2004l"' quando fecho para redefinir o "Bracketed Paste Mode"

Funciona para mim, YMMV.

A mesma abordagem pode ser usada com vi, vim, nano ou qualquer outro programa que se comporte mal.

user83536
fonte