使用 oh-my-zsh 制表符自动补全重音字符不起作用

使用 oh-my-zsh 制表符自动补全重音字符不起作用

我无法正确显示包含重音字符的自动完成文件名,例如ã我的 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_charsshell 选项控制。要完成此操作cão,请将其放入您的~/.zshrc文件中。

setopt combining_chars

我无法重现您的行为,这是非登录 ( zshvs -zsh) shell 的默认行为。

zsh -f在和 非登录的情况下zsh,它们仅获取配置文件/etc/zshenv,而不获取其他配置文件。也许您已/etc/zshenv进行配置,setopt combining_chars并且初始化序列中稍后的某些操作正在重置它。

相关内容