Uso Ubuntu 14.04 y tengo un problema extraño con la pantalla de mi terminal que me está molestando mucho. ¿Podría alguien ayudarme con eso o explicarme si estoy haciendo algo mal o no en Linux? Tengo algún tipo de solución, pero quiero entender por qué sucede esto una y otra vez.
A menudo copio los comandos bash de mis notas o de Internet y, a veces, obtengo extraños símbolos 0 ~ y 1 ~ que envuelven las 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 con frenos, así que ahora uso este comando printf "\e[?2004l"
para arreglar mi terminal si este modo se habilita de repente.
¿Es posible desactivar esta función de forma permanente de alguna manera? Lo enfrenté en todas las máquinas Ubuntu que trabajo ahora. Anteriormente utilicé Ubuntu 10.10 y 12.04 y nunca antes había tenido ese problema.
fuente
bind
analiza los argumentos que no reconoce, eso es lo que sucederá si ejecuta este comando usando Readline antes de la versión 7 o Bash antes de 4.4. Esta respuesta no hará nada útil hasta la próxima versión de Ubuntu (17.04).printf
enfoque funciona, pero no funciona cuando se coloca en my.bashrc
, y la función de alguna manera se activa periódicamente. Elbind
enfoque rompe mi teclado (lap
tecla no funciona, and putting that line in my
~ / .inputrc` funciona, durante 10 segundos, y luego la consola comienza a vomitar para-enaset-enaset-...
siempre después de 10 segundos de uso. Finalmente, simplemente actualicé manualmente a bash 4.4 desde la fuente para corregir el estúpido problema.bind 'set enable-bracketed-paste off'
(con un espacio en lugar de la primera `-``. Parece que no es posible editar solo un carácter.Puedes poner ese comando en tu
bashrc
. Entonces se aplicaría cada vez que abra su terminal.Simplemente escriba
vi ~/.bashrc
y agregueprintf "\e[?2004l"
al final y guarde el archivo con:wq
fuente
echo 'printf "\e[?2004l"' >> ~/.bashrc
hace lo mismo en una línea, y puedes verificarlo contail -n1 ~/.bashrc
. No hay necesidad de usarvi
.Para responder a su pregunta original de por qué sucede esto, aquí hay un posible escenario:
El problema es que mi programa de terminal todavía cree que la pasta entre corchetes está habilitada cuando se pasa del shell A al shell B, por lo que sigue agregando los caracteres alrededor de su contenido pegado (los bits 0 ~ y 1 ~). Shell B no los admite, por lo que simplemente los pasa sin cambios. Tiene que decirle a su terminal que apague la pasta entre corchetes haciendo que su shell imprima una secuencia de escape especial, que es lo que
printf "\e[?2004l"
hace.Hay algunas formas de resolver el problema:
Si no le importa la pasta entre corchetes, desactívela en el shell A para que nunca esté habilitada en primer lugar (respuesta de @ jwd)
Si desea seguir usando pasta entre corchetes en el shell A, pero deshabilitar en el shell B, agregue la secuencia de escape a su
.bashrc
(respuesta de @ MOHRE)Actualice el shell B para admitir pegado entre corchetes, de modo que interprete correctamente esos caracteres 0 ~ y 1 ~.
Nota al
printf
margen : si está utilizando la pantalla GNU, debe ejecutar ese comando fuera de la pantalla. No parece funcionar mientras está adentro.fuente