Автодополнение табуляцией диакритических символов с помощью oh-my-zsh не работает

Автодополнение табуляцией диакритических символов с помощью oh-my-zsh не работает

Я не могу правильно отображать автодополненные имена файлов, содержащие символы с диакритическими знаками, как ãв моей конфигурации оболочки 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

Я не могу воспроизвести ваше поведение, когда это является значением по умолчанию для оболочек без входа ( zshvs ).-zsh

В случае zsh -fи не-логина zshони только сорсинг /etc/zshenv, а не другие файлы конфигурации. Возможно, вы /etc/zshenvнастроили свой на setopt combining_charsи что-то позже в последовательности инициализации сбрасывает его.

Связанный контент