Первые символы команды, повторенной в дисплее при завершении

Так как Apple покончила nsswitch.conf у Льва можно просмотреть порядок сопоставителя с scutil --dns.

Мое предположение - Вы, будет видеть "DNS", перечисленный прежде "локальный".

Это - определенный взлом, но можно установить DNSMasq на хосте OS X и иметь системный запрос он для разрешения DNS. DNSMasq может читать /etc/hosts сначала и подайте записи, которые это находит там прежде, чем искать DNS. Это восстанавливает надлежащий порядок к разрешению.

Джентльмен, который записал этот блог, сделал всю тяжелую работу для Вас. Он описывает, как установить DNSMasq и настроить его на OS X Lion.

22
16.09.2013, 15:59
4 ответа

Если символы на Вашей командной строке иногда отображаются при смещении, это часто, потому что zsh вычислил неправильную ширину для подсказки. Признаки - то, что дисплей выглядит хорошо, пока Вы добавляете символы или движущийся символ символом, но становится искаженным (с некоторыми символами, кажущимися дальнейшим правом, чем они должны), когда Вы используете другие команды, которые перемещают курсор (Домой, завершение, и т.д.) или когда команда перекрывает вторую строку.

Zsh должен знать ширину подсказки для знания, куда символы команды помещаются. Это предполагает, что каждый символ занимает одно положение, если не сказали иначе.

Одна возможность состоит в том, что Ваша подсказка содержит escape-последовательности, которые правильно не разграничены. Escape-последовательности, которые изменяют цвет или другие аспекты форматирования текста или то изменение заголовок окна или другие эффекты, имеют нулевую ширину. Они должны быть включены в конструкции фигурных скобок процента %{…%}. В более общем плане, escape-последовательность как %42{…%} говорит zsh предполагать, что то, что в фигурных скобках, является 42 широкими символами.

Так проверьте свои быстрые настройки (PS1, PROMPT, или переменные, на которые они ссылаются) и удостоверяются что все escape-последовательности (такой как \e[…m для изменения текстовых атрибутов — отмечают, что это может присутствовать через некоторую переменную как $fg[red]) внутри %{…%}. Так как Вы используете oh-my-zsh, проверьте и свои собственные настройки и определения, которые Вы используете от oh-my-zsh.

Та же проблема возникает в ударе. Там нулевая ширина упорядочивает в быстрой потребности, в которую включат \[…\].

Другая возможность состоит в том, что Ваша подсказка содержит символы неASCII и что zsh (или любое другое приложение) и Ваш терминал имеют другую идею того, насколько широкий они. Это может произойти, если существует несоответствие между кодированием Вашего терминала и кодированием, которое объявляется в оболочке и этих двух результатах кодировки в различных ширинах для определенных последовательностей байта. Обычно Вы могли бы столкнуться с этой проблемой при использовании терминала не-Unicode, но объявлении локали Unicode или наоборот.

Приложения полагаются на переменные среды для знания локали; соответствующая установка LC_CTYPE, который определяется от переменных среды LANGUAGE, LC_ALL, LC_CTYPE и LANG (первый из них, который установлен, применяется). Команда locale | grep LC_CTYPE говорит Вам Вашу текущую установку. Обычно лучший способ избежать проблем локали состоит в том, чтобы позволить набору эмулятора терминала LC_CTYPE, так как это знает, какое кодирование это ожидает; но если это не работает на Вас, удостоверьтесь, что установили LC_CTYPE.

Те же признаки могут произойти, когда предыдущая команда отобразила некоторый вывод, который не закончился в новой строке, так, чтобы подсказка была отображена посреди строки, но оболочка не понимает это. В этом случае это только произошло бы после выполнения такой команды, не постоянно.

Если строка не отображена правильно, команда redisplay или clear-screen (связанный с Ctrl+L по умолчанию), зафиксирует его.

33
27.01.2020, 19:42
  • 1
    я предполагаю, что, вероятно, пропускаю связанный шрифт, я замечаю, что первый символ является странным. Это, как ожидают, будет -> Я думаю А-ч –  jilen 17.09.2013, 18:44
  • 2
    @jilen, это могло быть другой проблемой, которую я забыл упоминать: возможно, Ваша подсказка содержит символы неASCII в другом кодировании от Вашего терминала с одним или обеими из кодировки, являющейся многобайтовым. Если Вы хотите справку с этим, отправляете вывод locale и echo $PS1 | od -t x1 (и то же самое с любой другой переменной, используемой $PS1). –  Gilles 'SO- stop being evil' 17.09.2013, 18:48
  • 3
    я забыл устанавливать локаль (я использую archlinux, локаль, оставляют не набор по умолчанию). После локали набора решена эта проблема. Большое спасибо, парень!!!! –  jilen 17.09.2013, 19:20
  • 4
    I upvoted это, потому что, ну, в общем, это является довольно потрясающим. Но Escape не должны абсолютно быть включены в скобки, если Вы иначе обрабатываете количество курсора самостоятельно. вызывание подпокрытой оболочкой функции работало на меня в прошлом - или перенаправления, которые все еще приземляются на/dev/tty, не включая stdout, мог бы работать. Другие методы, которые работали - использование \e{7,8} сохранить/восстановить состояния курсора. –  mikeserv 26.07.2014, 11:21
  • 5
    Это было LC_CTYPE это зафиксировало его для меня. У меня был он набор к C, когда я сбросил его, все работало.Спасибо. –  jmaloney 29.10.2014, 16:20

У меня была та же проблема, и я нашел свое решение здесь: https://github.com/robbyrussell/oh-my-zsh/issues/5157#issuecomment-226031519 . Просто поместите следующее в свой ~ / .zshrc .

экспорт LC_CTYPE = en_US.UTF-8

17
20.08.2021, 13:05

Tuve este problema en iTerm 2 en macOS. Terminé resolviéndolo yendo a Preferencias -> Perfiles -> Texto y marcando "Usar Unicode versión 9 anchos".

3
20.08.2021, 13:05

У меня возникла эта проблема с использованием образа докера ubuntu lts (ubuntu:latest). Я исправил это с помощью инструкции, представленной на соответствующей странице:https://hub.docker.com/_/ubuntu

apt-get update && \
apt-get install -y locales && \
rm -rf /var/lib/apt/lists/* && \
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
echo 'export LANG=en_US.utf8' >> ~/.zshrc
zsh
1
20.08.2021, 13:05

Теги

Похожие вопросы