Bardzo często na komputerze Mac, gdy używam znaku potoku (|), a następnie znaku spacji, między nimi zostanie wstawiony niewidoczny znak.
Jest to szczególnie denerwujące podczas korzystania z terminala, ponieważ powoduje, że polecenia są nieważne.
Jeśli wpiszesz w iterm2 następujące, często otrzymuję następujące:
ls | cat
zsh: command not found: cat
Jeśli uderzę w klawisz strzałki w górę, aby uzyskać moje poprzednie polecenie, a następnie usuń i wstaw ponownie spację między |
i cat
, polecenie będzie działać.
Podczas kopiowania wkleję działające i niedziałające polecenia do pliku, jak poniżej:
non-working: ls | cat
working: ls | cat
i otwórz go w Hex Fiend , pokazuje to:
non-working: ls | cat
working: ls | cat
Ten sam problem występowałem również w SublimeText2 przy użyciu nawiasów kwadratowych ( []), po których następuje spacja. Więc nie wierzę, że to problem z iTerm2.
Odpowiedzi:
To, co się dzieje, polega na tym, że naciskasz klawisz ⌥spacji, który wstawia nieprzerwaną spację , znaną w HTML za pomocą
odwołania. Ta niezniszczalna przestrzeń jest przydatna w przetwarzaniu tekstu, w którym chcesz, aby niektóre słowa były sklejone, na przykład „OS” i „X” w „OS X”.Oczywiście jest to znak Unicode (
00A0
), a zatem większość narzędzi wiersza poleceń zawiedzie, takich jak widzenie bash_cat
(gdzie_
jest nieprzerwana spacja), a Hex Fiend po prostu używa dla niego złej reprezentacji. Z drugiej strony niektórzy redaktorzy po prostu dyskretnie go usuwają (np. Ten edytor tutaj), podczas gdy inni mają nawet specjalną reprezentację (np. TextMate pokazuje kropkę zamiast pustego miejsca).Istnieją dwa rozwiązania:
Zwracaj większą uwagę, aby zwolnić ⌥klawisz podczas naciskania spacji. Nawiasem mówiąc: to też zdarza mi się cały czas.
Całkowicie wyłącz kombinację: jak wyłączyć kombinację klawiszy Opcja-Spacja dla spacji nierozdzielających?
źródło
⌥
modyfikatorem na zwykły znak spacji.