Приховані символи, вставлені після pipe (|), після чого пробіл [дублікат]


13

Дуже часто на моєму Mac, коли я використовую символ pipe (|), а потім пробіл, між ними буде вставлений невидимий символ.

Це особливо дратує при використанні терміналу, оскільки робить команди недійсними.

Якщо я ввожу таке в 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
З цим пов'язано, чи існує спосіб, щоб Terminal показував невидимі символи, подібно до того, як текстові редактори показують їх, наприклад, як сіра куля?
jelovirt

Відповіді:


14

Що відбувається, це те, що ви продовжуєте натискати на пробіл, який вставляє нерозривний пробіл , відомий в HTML через  посилання. Цей нерозривний простір корисний при обробці тексту, де потрібно, щоб певні слова злипилися, як-от "ОС" і "Х" в "ОС X".

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

Є два рішення:


Це справді є проблемою. Не можу повірити, що я цього раніше не зловив. Я думаю, що рішенням буде перекомпонувати простір у поєднанні з модифікатором до звичайного символу пробілу.
вишуканий

Чи можливо зробити відображення терміналу nbsp як зворотний символ чи якийсь такий вид, щоб ви миттєво його бачили, коли ви вводили помилку?
Попередження

@forthrin Добре запитання. Я не знаю жодного способу зробити це, окрім того, що возитися з налаштуваннями вашої локалі, так що символи, що не належать до ASCII, не можуть відображатися належним чином.
slhck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.