O preenchimento automático de guias de caracteres acentuados com oh-my-zsh não funciona

O preenchimento automático de guias de caracteres acentuados com oh-my-zsh não funciona

Não consigo exibir corretamente nomes de arquivos preenchidos automaticamente que contêm caracteres acentuados, como ãna configuração do meu shell zsheoh-meu-zsh.

Criei um nome de arquivo cão.txtpara demonstrar esse problema. Se você estiver interessado, isso significa dogem português.

Então, quando tento preencher automaticamente like cat c<tab>, isso acontece:

% cat ca<0303>o.txt
hi dog

e echo $0me dá:-zsh

Mas, se eu for para uma zshsessão "simples", exatamente o mesmo preenchimento automático funciona bem:

% zsh
% echo $0
zsh
%  cat cão.txt
hi dog

O meu localeé assim:

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"

e a LANGvariável que tentei vazia, com "en_US.UTF-8"e também "pt_PT.UTF-8". Além disso, verifiquei novamente se as localeconfigurações são exatamente as mesmas antes e depois de ir para a zshsessão "simples".

Além disso, funciona da mesma maneira no aplicativo OSX do terminal padrão e no iTerm2.

Estou usando a versão zsh 5.0.7.

Aqui está o meu.zshrcarquivo, bem como outros dotfiles que estou usando.

Já tentei desinstalar oh-my-zshe instalar tanto de forma automática quanto manual, sempre com o mesmo problema de exibição de caracteres acentuados com preenchimento automático.

Responder1

Isso parece zshum comportamento padrão normal. Se os caracteres combinados são exibidos combinados durante o preenchimento automático é controlado pela combining_charsopção shell. Para concluí-lo cão, coloque-o em seu ~/.zshrcarquivo.

setopt combining_chars

Não consigo reproduzir seu comportamento onde este é o padrão para shells sem login ( zshvs ).-zsh

No caso de zsh -fe não-login zsh, eles são originários apenas /etc/zshenv, e não os demais arquivos de configuração. Talvez você tenha /etc/zshenvconfigurado setopt combining_charse algo mais tarde na sequência de inicialização esteja redefinindo-o.

informação relacionada