Так как Apple покончила nsswitch.conf
у Льва можно просмотреть порядок сопоставителя с scutil --dns
.
Мое предположение - Вы, будет видеть "DNS", перечисленный прежде "локальный".
Это - определенный взлом, но можно установить DNSMasq на хосте OS X и иметь системный запрос он для разрешения DNS. DNSMasq может читать /etc/hosts
сначала и подайте записи, которые это находит там прежде, чем искать DNS. Это восстанавливает надлежащий порядок к разрешению.
Джентльмен, который записал этот блог, сделал всю тяжелую работу для Вас. Он описывает, как установить DNSMasq и настроить его на OS X Lion.
Если символы на Вашей командной строке иногда отображаются при смещении, это часто, потому что 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 по умолчанию), зафиксирует его.
У меня была та же проблема, и я нашел свое решение здесь: https://github.com/robbyrussell/oh-my-zsh/issues/5157#issuecomment-226031519 . Просто поместите следующее в свой ~ / .zshrc
.
экспорт LC_CTYPE = en_US.UTF-8
Tuve este problema en iTerm 2 en macOS. Terminé resolviéndolo yendo a Preferencias -> Perfiles -> Texto y marcando "Usar Unicode versión 9 anchos".
У меня возникла эта проблема с использованием образа докера 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
->
Я думаю А-ч – jilen 17.09.2013, 18:44locale
иecho $PS1 | od -t x1
(и то же самое с любой другой переменной, используемой$PS1
). – Gilles 'SO- stop being evil' 17.09.2013, 18:48\e{7,8}
сохранить/восстановить состояния курсора. – mikeserv 26.07.2014, 11:21LC_CTYPE
это зафиксировало его для меня. У меня был он набор кC
, когда я сбросил его, все работало.Спасибо. – jmaloney 29.10.2014, 16:20