Copiar-Pegar en xfce4-terminal agrega 0 ~ y 1 ~

105

Yo uso xubuntu 14.04, 64 bit. De vez en cuando, cuando trato de pegar algo de texto en xfce4-terminal, en lugar del texto esperado para pegar, está rodeado por 0~y 1~, como:

0~mvn clean install1~

Se supone que el texto debe ser mvn clean install: verifiqué esto pegando el contenido en varias otras aplicaciones (gnome-terminal, gedit y otras). Cada aplicación pega correctamente el contenido, excepto xfce4-terminal. No pude encontrar ninguna referencia para esto en Internet (desafortunadamente, es difícil buscar texto con caracteres especiales en google.com ...). ¿Por qué pasó esto?

botismarius
fuente
Como estas pegando Clic medio, o algo más?
Celada
1
He probado todos los métodos: clic con el botón central, clic derecho y opción de pegar, Ctrl + Mayús + v. Cuando aparecen los caracteres 0 ~ y 1 ~, no importa qué método de pegado use.
botismarius

Respuestas:

144

El problema es que su terminal está en modo pegado entre corchetes, pero no parece admitirlo correctamente. El problema se solucionó en VTE, pero xfce4-terminal todavía usa una versión antigua y sin mantenimiento.

Puede intentar desactivar temporalmente el modo de pegado entre paréntesis usando:

printf "\e[?2004l"
kyrias
fuente
44
Si no siempre puede reproducirlo, es posible que esté ejecutando algún programa que habilitó el modo de pegado entre paréntesis y luego se bloqueó, por lo que no pudo desactivarlo antes de salir.
kyrias
44
¡Genial gracias! He estado luchando con este problema por más de un año. ¿Es posible deshabilitar completamente este "modo de pegado entre paréntesis"? Por cierto, ¿quién implementa cosas tan locas? ;)
Adam Romanek el
44
Depende de su terminal. Y es una característica realmente útil, ya que permite a las aplicaciones saber si algo se escribió o pegó. Por un lado, weechat, un programa IRC, lo utiliza para preguntar si desea enviar pastas de varias líneas, lo que no podría hacer sin el modo de pegado entre corchetes, ya que no habría forma de saber si el usuario escribió las líneas o no.
kyrias
1
¿Cómo puedo encontrar qué programa está jugando con el modo pegado entre paréntesis?
aviggiano
3
Para distribuciones basadas en Ubuntu, puede intentar instalar la versión parcheada del paquete 'vte' desde launchpad.net/~adrozdoff/+archive/ubuntu/vte
Denis Bakharev
78

Mi problema se debió a una sesión de bash mal cerrada. Entonces ejecutar el comando reseten mi terminal lo resolvió de inmediato.

petobens
fuente
2
Esto funcionó para mí.
AFP_555
¡Y funcionó para mí!
tomd
Sucedió con Ubuntu 16.04, usando terminador. reinicio trabajado!
user1270710
Mi terminador estaba haciendo lo mismo, también ejecutaba Ubuntu 16.04. Correr reseten mi conexión ssh lo arregló.
Marcello Grechi Lins
23

Tuve el mismo problema, ocurre después de usar vi.

La mía se resolvió agregando set t_BE= a mi .vimrcarchivo.

Como referencia , esto es lo que hace t_BE:

t_BE habilita el modo de pegado entre corchetes

ivan
fuente
77
Esa fue exactamente la causa, gracias! En mi caso, comenzó cuando actualicé a VIM 8
rgerganov el
1
¿podría explicar qué hace t_BE = y por qué resuelve el problema?
Francesco Boccardo
7

Este comportamiento se produce cuando el emulador de terminal está atascado en modo pegado entre corchetes .

Esto suele suceder cuando una aplicación se cierra de forma sucia (se bloquea o tiene errores).

Otra de las razones para el fenómeno que ocurra con frecuencia es un error en versiones anteriores de TEV (TEV es el widget de emulación de terminal bajo gnome-terminaly xfce4-terminaly muchos más), que se activa por determinadas acciones en ciertos servicios públicos como alternar los paneles en Midnight Commander .

Para ver si este error está solucionado en el emulador de terminal basado en VTE que está ejecutando: Ejecute echo -ne '\e[>c', esto insertará algunos caracteres como si los hubiera escrito. Si el número del medio es 3602o más grande, el viejo error VTE mencionado ya no está presente para usted. Si el número es menor que eso, VTE aún se ve afectado y se atasca en el modo de pegado entre paréntesis con más frecuencia de lo que debería.

Para ver si cierto emulador de terminal está arreglado en una determinada distribución de Ubuntu, verifique sus dependencias en packages.ubuntu.com . libvte-2.91-0es bueno. libvte-2.90-9solo es bueno si la versión real de ese paquete es 0.36.2 o más reciente, y libvte9es malo. En particular, xfce4-terminaltiene errores en Xenial y está arreglado en Zesty.

egmont
fuente
1

Puede que esto no se aplique directamente a su problema, pero descubrí que este síntoma probablemente, en mi caso, sea causado por mi editor de elección 'mcedit' (Midnight Commander)

Para aliviar el problema del error, agregué la siguiente función a mi archivo .bashrc:

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

Entonces 'fuente .bashrc'

Ahora, cada vez que ejecuto 'mcedit', agrega automáticamente 'printf "\ e [? 2004l"' cuando cierro para restablecer el "Modo de pegado entre corchetes"

Funciona para mí, YMMV.

El mismo enfoque se puede usar con vi, vim, nano o cualquier otro programa de comportamiento incorrecto.

user83536
fuente