12

Очень часто на моем Mac, когда я использую символ трубы (|), за которым следует символ пробела, между ними вставляется невидимый символ.

Это особенно раздражает при использовании терминала, поскольку делает команды недействительными.

Если я набираю следующее в iterm2, я часто получаю следующее:

ls | cat
zsh: command not found:  cat

Если я нажму клавишу со стрелкой вверх, чтобы получить мою предыдущую команду, а затем удалите и снова вставьте пробел между | и cat , команда будет работать.

Когда я копирую, вставляю рабочие и нерабочие команды в файл, например так:

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

и откройте его в Hex Fiend, оно показывает следующее:

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

Я также сталкивался с такой же проблемой в SublimeText2, используя квадратные скобки ([ ]), за которыми следовал пробел. Так что я не считаю, что это проблема с iTerm2.

1 ответ1

14

Что происходит, так это то, что вы продолжаете нажимать с помощью пробела, который вставляет неразрывный пробел, известный в HTML через   ссылка. Этот неразрывный пробел полезен при обработке текста, когда вы хотите, чтобы определенные слова слипались, например, "OS" и "X" в "OS X".

Очевидно, что это символ Unicode (00A0), и поэтому большинство утилит командной строки завершатся с ошибкой, например, bash видеть _cat (где _ - неразрывный пробел), и Hex Fiend просто использует для этого плохое представление. Некоторые редакторы, с другой стороны, просто молча удаляют его (например, этот редактор прямо здесь), в то время как другие даже имеют специальное представление для него (например, TextMate, показывающий точку вместо пробела).

Есть два решения:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .