
Я не могу правильно отображать автодополненные имена файлов, содержащие символы с диакритическими знаками, как ã
в моей конфигурации оболочки zsh
ио-мой-зш.
Я создал имя файла, cão.txt
чтобы продемонстрировать эту проблему. Если вам интересно, это значит dog
на португальском языке.
Итак, когда я пытаюсь выполнить автодополнение типа cat c<tab>
, происходит следующее:
% cat ca<0303>o.txt
hi dog
и echo $0
дает мне:-zsh
Но если я перейду к «обычному» zsh
сеансу, то точно такое же автозаполнение будет работать нормально:
% zsh
% echo $0
zsh
% cat cão.txt
hi dog
У меня locale
так:
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
и LANG
переменную я попробовал ее пустой, с "en_US.UTF-8"
и также "pt_PT.UTF-8"
. Также я дважды проверил, что locale
настройки точно такие же до и после перехода в "простой" zsh
сеанс.
Он также работает одинаково как в стандартном терминальном приложении OSX, так и в iTerm2.
Я использую версию zsh 5.0.7
.
Вот мой.zshrcfile, а также другие dotfiles, которые я использую.
Я пробовал удалить oh-my-zsh
и установить его как автоматически, так и вручную, но всегда сталкивался с одной и той же проблемой отображения диакритических символов при автозаполнении.
решение1
Это выглядит как нормальное zsh
поведение по умолчанию. Отображение объединенных символов в процессе автодополнения контролируется combining_chars
опцией оболочки. Чтобы завершить его до cão
, поместите это в свой ~/.zshrc
файл.
setopt combining_chars
Я не могу воспроизвести ваше поведение, когда это является значением по умолчанию для оболочек без входа ( zsh
vs ).-zsh
В случае zsh -f
и не-логина zsh
они только сорсинг /etc/zshenv
, а не другие файлы конфигурации. Возможно, вы /etc/zshenv
настроили свой на setopt combining_chars
и что-то позже в последовательности инициализации сбрасывает его.