![Автодополнение табуляцией диакритических символов с помощью oh-my-zsh не работает](https://rvso.com/image/36010/%D0%90%D0%B2%D1%82%D0%BE%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%82%D0%B0%D0%B1%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D0%B5%D0%B9%20%D0%B4%D0%B8%D0%B0%D0%BA%D1%80%D0%B8%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20oh-my-zsh%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82.png)
Я не могу правильно отображать автодополненные имена файлов, содержащие символы с диакритическими знаками, как ã
в моей конфигурации оболочки 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
и что-то позже в последовательности инициализации сбрасывает его.