Caratteri nascosti inseriti dopo la pipe (|) seguito da uno spazio [duplicato]


13

Molto spesso, sul mio Mac, quando uso il carattere pipe (|) seguito da un carattere spazio, un carattere invisibile verrà inserito tra.

Ciò è particolarmente fastidioso quando si utilizza il terminale, poiché rende i comandi non validi.

Se scrivo quanto segue in iterm2, ottengo spesso quanto segue:

ls | cat
zsh: command not found:  cat

Se premo il tasto freccia su per ottenere il comando precedente, quindi rimuovo e reinserisco lo spazio tra |e cat, il comando funzionerà.

Quando copio incolla i comandi funzionanti e non funzionanti in un file, in questo modo:

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

e aprilo in Hex Fiend mostra quanto segue:

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

Ho anche riscontrato lo stesso tipo di problema in SublimeText2 usando le parentesi quadre ( []) seguite da uno spazio. Quindi non credo che sia un problema con iTerm2.


1
In relazione a questo, c'è un modo per fare in modo che Terminal mostri i caratteri invisibili, in modo simile a come gli editor di testo li mostrano, ad esempio come un proiettile grigio?
jelovirt,

Risposte:


14

Quello che succede è che continui a premere con la barra spaziatrice, che inserisce uno spazio non-break , noto in HTML attraverso il  riferimento. Questo spazio senza interruzioni è utile nell'elaborazione del testo in cui si desidera che determinate parole si uniscano, come "OS" e "X" in "OS X".

Ovviamente, questo è un carattere unicode ( 00A0), e quindi la maggior parte delle utility da riga di comando falliranno, come bash vedere _cat(dove si _trova lo spazio non-break), e Hex Fiend semplicemente usando una cattiva rappresentazione per esso. D'altro canto, alcuni editor lo elimineranno silenziosamente (ad esempio questo editor qui), mentre altri hanno persino una rappresentazione speciale per esso (ad esempio TextMate che mostra un punto anziché lo spazio vuoto).

Esistono due soluzioni:


Questo sembra davvero essere il problema. Non riesco a credere di non averlo scoperto prima. Immagino che una soluzione sarebbe quella di rimappare lo spazio combinato con il modificatore in un normale personaggio spaziale.
elegante

È possibile fare in modo che il Terminale visualizzi nbsp come carattere inverso o in qualche modo, in modo da poterlo vedere immediatamente quando si digita male?
Outrin

@forthrin Buona domanda. Non conosco alcun modo per farlo, a parte il pasticciare con le impostazioni locali in modo che i caratteri non ASCII non possano essere visualizzati correttamente.
slhck
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.