¿Por qué el modo de pegado entre corchetes está habilitado esporádicamente en la pantalla de mi terminal?

18

Uso Ubuntu 14.04 y tengo un problema extraño con la pantalla de mi terminal que me está molestando mucho. ¿Alguien podría ayudarme con eso o explicarme si estoy haciendo algo mal o no de manera de Linux? Tengo algún tipo de solución, pero quiero entender por qué esto sucede una y otra vez.

A menudo copio comandos bash de mis notas o de Internet y algunas veces obtengo extraños símbolos 0 ~ y 1 ~ que envuelven cosas que copié. Es muy molesto y esto sucede de manera totalmente aleatoria.

Después de una larga búsqueda, descubrí que esto se llama modo de pegado entrelazado , así que ahora uso este comando printf "\e[?2004l" para arreglar mi terminal si este modo se activó repentinamente.

¿Es posible desactivar esta característica permanentemente de alguna manera? Me enfrenté a eso en todas las máquinas Ubuntu que trabajo ahora. Anteriormente usé Ubuntu 10.10 y 12.04 y nunca antes había tenido ese problema.

    
pregunta artemdevel 16.08.2015 - 18:26

3 respuestas

6

Puedes inhabilitar el modo de pegado entre corchetes.

Para probarlo temporalmente, en bash:

bind 'set-enable-bracketed-paste off'

Luego, si te gusta cómo se comporta, puedes poner la configuración en ~/.inputrc , o en todo el sistema en /etc/inputrc (o donde sea que esté en Ubuntu).

    
respondido por el jwd 24.02.2016 - 18:47
4

Puedes poner ese comando en tu bashrc . Luego se aplicaría cada vez que abra su terminal.

Simplemente escribe vi ~/.bashrc y agrega printf "\e[?2004l" al final y guarda el archivo con :wq

    
respondido por el MOHRE 06.05.2017 - 04:31
1

Para responder a su pregunta original de por qué sucede esto, aquí hay un posible escenario:

  • La computadora de mi casa tenía una nueva versión de zsh que admitía pegado entre corchetes (llamémoslo caparazón A)
  • Me metí en una computadora con mi caparazón configurado en una versión anterior de bash, que no admite la pasta entre corchetes (capa B)

El problema es que mi programa de terminal aún cree que la pasta entre corchetes está habilitada cuando se transfiere del shell A al shell B, por lo que sigue agregando los caracteres alrededor del contenido pegado (los bits 0 ~ y 1 ~). Shell B no los admite, por lo que solo los pasa sin cambios. Tienes que decirle a tu terminal que apague la pasta entre corchetes haciendo que tu caparazón imprima una secuencia de escape especial, que es lo que printf "\e[?2004l" hace.

Hay algunas formas de resolver el problema:

  1. Si no le importa nada pegar entre corchetes, apáguelo en el shell A para que nunca se active en primer lugar (@ jwd's answer)

  2. Si quieres seguir usando el código entre corchetes en el shell A, pero deshabilitar en el shell B, agrega la secuencia de escape a tu .bashrc (@ respuesta de MOHRE)

  3. Actualiza el shell B para que admita el corchete, para que interprete correctamente esos 0 ~ y 1 ~ caracteres.

Nota: si usa la pantalla GNU, necesita ejecutar ese comando printf fuera de la pantalla. No parece funcionar mientras está adentro.

    
respondido por el rjh 02.01.2018 - 15:23

Lea otras preguntas en las etiquetas