Скрытые символы вставляются после канала (|), за которым следует пробел
Очень часто на моем 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 ответ
Что происходит, вы продолжаете нажимать ⌥ с помощью пробела, который вставляет неразрывный пробел, известный в HTML через
ссылка. Этот неразрывный пробел полезен при обработке текста, когда вы хотите, чтобы определенные слова слипались, например, "OS" и "X" в "OS X".
Очевидно, это символ Юникода (00A0
), и, следовательно, большинство утилит командной строки выйдут из строя, например, просмотр bash _cat
(где _
это неразрывный пробел), и Hex Fiend просто использует для этого плохое представление. Некоторые редакторы, с другой стороны, просто молча удаляют его (например, этот редактор прямо здесь), в то время как другие даже имеют специальное представление для него (например, TextMate, показывающий точку вместо пробела).
Есть два решения:
Уделяйте больше внимания отпусканию клавиши when при нажатии клавиши пробела. Кстати, это происходит со мной все время тоже.
Отключить комбинацию в целом: Как отключить комбинацию клавиш Option-Space для неразрывных пробелов?