Arrastrar y soltar un archivo en una ventana de Terminal no se escapa de la ruta bajo zsh 5.2

3

Bajo OS X, puede arrastrar y soltar un archivo desde el Finder (o en cualquier otro lugar) a una ventana de Terminal y la ruta del archivo se insertará como si lo hubiera escrito. Recientemente, los nombres de archivos con espacios han dejado de manejarse correctamente : si la ruta del archivo contenía espacios antes, la Terminal obtendría una versión entre comillas dobles o si no, con cada espacio precedido por una barra invertida. Ahora, la ruta completa del archivo se ha volcado, y si contiene algún espacio, entonces tengo que regresar y escapar de ellos.

He jugado un poco con la configuración de "shells open with" y parece que el escape correcto ocurre cuando el shell es /bin/bash (GNU bash 3.2.57 (1) -release) o /bin/zsh (zsh 5.0). 8) pero no cuando el shell es mi /usr/local/bin/zsh (zsh 5.2) instalado manualmente. Estoy en OS X 10.11.2.

¿Hubo un cambio en zsh que podría haber arruinado el arrastrar y soltar en la Terminal? ¿O es el propio Terminal utilizando algún tipo de lista blanca de shells que no incluye mi zsh?

Editar: instalé zsh 5.0.8 en /usr/local/bin/zsh y los nombres de archivo se se escaparon correctamente para ese shell. Parece que algún cambio en zsh entre las versiones 5.0.8 y 5.2 hizo que esto dejara de funcionar.

    
pregunta bdesham 18.01.2016 - 16:27

2 respuestas

6

Este comportamiento parece deberse a la función de pegado entre corchetes de zsh, que es on por defecto a partir de la versión 5.1 . Encontré que si agregué

unset zle_bracketed_paste

a mi zshrc y luego soltar archivos en Terminal funciona correctamente con zsh 5.2.

( Esta publicación del blog menciona entre corchetes- paste-magic, que parece que podría usarse para admitir la eliminación de archivos sin desactivar toda la función de pegado entre corchetes. Sin embargo, creo que necesitarías escribir código para que eso suceda; simplemente no se activó el bracketing-paste-magic solucionar mi problema.)

    
respondido por el bdesham 18.01.2016 - 17:19
2

Como se menciona en respuesta de @ bdesham , Zsh 5.1 introdujo el uso del “Modo de pegado entre paréntesis” del terminal. lo que permite que los programas basados en terminales diferencien el texto pegado / arrastrado del usuario que escribe caracteres individuales.

El terminal (al menos a partir de OS X El Capitan 10.11.x) no realiza comillas en el shell de las rutas de los archivos pegados / arrastrados cuando el modo de pegado con paréntesis está activado, porque antes de Zsh 5.1 BPM solo se usaba a pantalla completa editores como Emacs y Vim, que normalmente no necesitan comillas.

Puede forzar que se apliquen las cotizaciones de shell al pegar / arrastrar presionando la tecla modificadora de Control.

    
respondido por el Chris Page 24.05.2016 - 04:47

Lea otras preguntas en las etiquetas