我无法正确显示包含重音字符的自动完成文件名,例如ã
我的 shell 配置中的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
。
这是我的.zshrc文件,以及我正在使用的其他点文件。
我尝试过oh-my-zsh
以自动和手动方式卸载和安装它,总是遇到使用自动完成显示重音字符的相同问题。
答案1
这看起来像是正常的默认zsh
行为。在自动完成过程中是否组合显示组合字符由combining_chars
shell 选项控制。要完成此操作cão
,请将其放入您的~/.zshrc
文件中。
setopt combining_chars
我无法重现您的行为,这是非登录 ( zsh
vs -zsh
) shell 的默认行为。
zsh -f
在和 非登录的情况下zsh
,它们仅获取配置文件/etc/zshenv
,而不获取其他配置文件。也许您已/etc/zshenv
进行配置,setopt combining_chars
并且初始化序列中稍后的某些操作正在重置它。