Como posso fazer com que o zsh exiba os caracteres internacionais corretamente?

6

Eu comecei a usar o zsh e adoro isso. No entanto, eu me deparei com um aborrecimento quando se trata de personagens internacionais:

➜  ~  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
➜  ~  

Com o bash, é assim (o nome do arquivo em rm -v é preenchido automaticamente pressionando TAB em ambos os casos).

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 ~ $ 

Como posso corrigir isso com zsh ?

EDITAR:

A definição de export LANG=en_US:UTF-8 corrige a saída de, e. ls e também mostra-o corretamente na linha abaixo da entrada atual quando existem múltiplas combinações na conclusão da TAB . No entanto, selecionando o arquivo de TAB -completion ele mostra o caminho errado na linha de entrada, o mesmo vale para quando há apenas uma correspondência.

O exemplo acima agora se parece com isso com zsh :

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

Se eu tiver dois arquivos correspondentes na conclusão do TAB , será assim:

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

Selecionando uma das opções acima pressionando TAB novamente e usando as teclas de seta, ou pressionando a ou o para fazer apenas uma correspondência antes da conclusão gera isto:

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

Alguma sugestão sobre o que há de errado?

    
por Morgan 15.04.2013 / 14:08

3 respostas

2

Obrigado @mpy por resolver o problema do LANG. A resposta é usar:

export LANG=en_US.UTF-8

no seu .zshrc .

O problema restante é causado pelo sistema de conclusão. Infelizmente a conclusão é um recurso monstruoso. Envolve funções de shell ou talvez até scripts sendo chamados e em algum lugar nesse processo possivelmente LANG é novamente configurado para um valor errado. Se você tem privilégios de root, você pode depurar este código de script de shell). Boa sorte com o guia de conclusão .

    
por 23.06.2013 / 19:34
0

O problema ainda é o mesmo nas últimas versões de zsh que vêm com Mac OS X 10.8 (também conhecido como Mountain Lion), 10.9 (também conhecido como Mavericks) & 10.10 (também conhecido como Yosemite) (ainda estou testando o beta 10.11 e não posso divulgar informações sobre ele). A conclusão de zsh está falhando.

A versão port está funcionando corretamente, pelo menos com a versão 5.1.1:

/usr/bin/sudo port install zsh

Teste:

/opt/local/bin/zsh

% touch hølé e % ls -l htab
%código% %código% → ls -l hølé

    
por 02.04.2016 / 19:00
0

Eu tive o mesmo problema no Arch Linux usando o zsh.

Usando o bash, tudo funciona bem, mas quando eu mudo para o zsh, alguns caracteres são exibidos incorretamente (por exemplo, ñ, °).

Adicionei export LANG="en_US.UTF-8" ao meu .zshrc e nada aconteceu.

Eu fiz tudo para definir o LANG dentro do zsh e nada foi corrigido.

Então eu mudei meu shell de volta para bash com chsh -s /bin/bash e notei que meu env var LANG estava errado com printenv LANG ele me mostrou LANG=C .

Esta é uma nova instalação, então eu esqueço de criar o arquivo /etc/locale.conf e definir meu LANG="en_US.UTF-8" e depois de reiniciar tudo funciona perfeitamente.

Espero que isso ajude.

    
por 26.06.2016 / 16:07