7

Я только начал использовать Zsh, и мне это нравится. Тем не менее, я наткнулся на раздражение, когда дело доходит до международных персонажей:

➜  ~  touch åäö.txt               
➜  ~  ls                          
Desktop       Dropbox       Music         Sites
Documents     Library       Pictures      a??a??o??.txt
Downloads     Movies        Public
➜  ~  rm -v a<030a>a<0308>o<0308>.txt
åäö.txt
➜  ~  

С bash это выглядит так (имя файла в rm -v автоматически завершается нажатием клавиши TAB в обоих случаях).

johan@retina ~ $ touch åäö.txt
johan@retina ~ $ ls
Desktop       Dropbox       Music         Sites
Documents     Library       Pictures      åäö.txt
Downloads     Movies        Public
johan@retina ~ $ rm -v åäö.txt 
åäö.txt
johan@retina ~ $ 

Как я могу это исправить с помощью zsh?

РЕДАКТИРОВАТЬ:

Настройка export LANG=en_US:UTF-8 фиксирует вывод, например, ls а также правильно отображает его в строке под текущим вводом, когда есть несколько совпадений при завершении TAB . Тем не менее, при выборе файла в TAB -completion он показывает неправильный путь в строке ввода, то же самое происходит, когда есть только одно совпадение.

Приведенный выше пример теперь выглядит так с zsh:

➜  ~  touch åäö.txt               
➜  ~  ls                          
åäö.txy
➜  ~  rm -v a<030a>a<0308>o<0308>.txt
åäö.txt
➜  ~  

Если у меня есть два файла, совпадающие на TAB- дополнении, это выглядит так:

➜  ~  touch åäö.txt               
➜  ~  touch öäå.txt                          
➜  ~  rm 
öäå.txt    åäö.txt

Выбор одного из вышеперечисленных путем повторного нажатия клавиши TAB и использования клавиш со стрелками или нажатия либо a, либо o, чтобы сделать только одно совпадение до завершения, генерирует это:

➜  ~  rm o<0308>a<0308>a<030a>.txt
➜  ~  rm a<030a>a<0308>o<0308>.txt

Любые предложения о том, что не так?

4 ответа4

3

Спасибо @mpy за решение проблемы с LANG. Ответ должен использовать:

export LANG=en_US.UTF-8

в вашем .zshrc .

Оставшаяся проблема вызвана системой завершения. К сожалению завершение - особенность монстра. Он включает в себя функции оболочки или, возможно, даже вызов скриптов, и где-то в этом процессе, возможно, LANG снова установлен в неправильное значение. Если у вас есть привилегии root, вы можете отлаживать этот код сценария оболочки). Удачи с руководством по завершению.

0

У меня была такая же проблема в Arch Linux с использованием Zsh.

При использовании bash все работает нормально, но когда я переключаюсь на zsh, некоторые символы отображаются неправильно (например, ñ, °).

Я добавил export LANG="en_US.UTF-8" в мой .zshrc и ничего не произошло.

Я сделал все, чтобы установить LANG внутри Zsh и ничего не исправляет.

Затем я изменил свою оболочку обратно на bash с помощью chsh -s /bin/bash и заметил, что мой env var LANG был неправильным с printenv LANG он показал мне LANG=C

Это новая установка, поэтому я забываю создать файл /etc/locale.conf и установить мой LANG="en_US.UTF-8" и после перезапуска все работает отлично.

Надеюсь это поможет.

0

Пытаться

  1. Установленный Powerline-совместимый шрифт https://github.com/powerline/fonts
  2. Установка этих переменных ENV в .zshrc:
LANG="en_US.UTF-8"
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"
0

Проблема остается той же самой на последних версиях zsh которые поставляются с Mac OS X 10.8 (также известной как Mountain Lion), 10.9 (также известной как Mavericks) и 10.10 (также известной как Yosemite) (я все еще бета-тестирую 10.11 и не могу раскрыть информацию о Это). Завершение zsh не удается .

Версия port работает правильно по крайней мере с версией 5.1.1:

/usr/bin/sudo port install zsh

Тестовое задание:

/opt/local/bin/zsh

% touch hølé
% ls -l htab
→ ls -l hølé
% -rw-r--r-- 1 bob wheel 0 Apr 2 18:49 hølé
%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .