Caracteres ocultos insertados después de la tubería (|) seguidos de un espacio [duplicado]

13

Muy a menudo, en mi Mac, cuando uso el carácter de barra vertical (|) seguido de un carácter de espacio, se inserta un carácter invisible en el medio.

Esto es especialmente molesto cuando se usa el terminal, ya que invalida los comandos.

Si escribo lo siguiente en iterm2, a menudo obtengo lo siguiente:

ls | cat
zsh: command not found:  cat

Si presiono la tecla de flecha hacia arriba para obtener mi comando anterior, y luego elimino y reinserto el espacio entre |y cat, el comando funcionará.

Cuando copio, pego los comandos de trabajo y no de trabajo en un archivo, así:

non-working: ls | cat
working: ls | cat

y abrirlo en Hex Fiend muestra lo siguiente:

non-working: ls | cat
working: ls | cat

También he experimentado el mismo tipo de problema en SublimeText2 usando los corchetes ( []) seguidos de un espacio. Así que no creo que sea un problema con iTerm2.

hábil
fuente
1
En relación con esto, ¿hay alguna manera de que Terminal muestre caracteres invisibles, de forma similar a cómo los muestran los editores de texto, por ejemplo, como una viñeta gris?
jelovirt

Respuestas:

14

Lo que sucede es que sigues presionando con la barra espaciadora, que inserta un espacio ininterrumpido , conocido en HTML a través de la  referencia. Este espacio sin interrupciones es útil en el procesamiento de texto donde desea que ciertas palabras se peguen, como "OS" y "X" en "OS X".

Obviamente, este es un carácter unicode ( 00A0) y, por lo tanto, la mayoría de las utilidades de la línea de comandos fallarán, como bash vista _cat(dónde _está el espacio sin interrupción) y Hex Fiend solo usa una mala representación para ello. Algunos editores, por otro lado, simplemente lo eliminarán en silencio (por ejemplo, este editor aquí), mientras que otros incluso tienen una representación especial (por ejemplo, TextMate muestra un punto en lugar del espacio en blanco).

Hay dos soluciones:

slhck
fuente
De hecho, este parece ser el problema. No puedo creer que no haya captado esto antes. Supongo que una solución sería reasignar el espacio combinado con el modificador a un carácter de espacio regular.
ingenioso
¿Es posible hacer que el Terminal muestre nbsp como un carácter inverso o de algún tipo, para que lo veas instantáneamente cuando escribes mal?
forthrin
@forthrin Buena pregunta. No conozco ninguna forma de hacerlo, aparte de jugar con la configuración regional de modo que los caracteres que no son ASCII no se puedan mostrar correctamente.
slhck