nun*_*nos 5 zsh autocomplete oh-my-zsh
我无法正确显示包含重音字符的自动完成文件名,例如ã在我的 shell 配置zsh和oh-my-zsh 中。
我创建了一个文件名cão.txt来演示这个问题。如果你有兴趣,那就是dog葡萄牙语。
因此,当我尝试像 那样自动完成时cat c<tab>,会发生这种情况:
% cat ca<0303>o.txt
hi dog
Run Code Online (Sandbox Code Playgroud)
并echo $0给我:-zsh
但是,如果我去一个“普通”zsh会话,完全相同的自动完成工作正常:
% zsh
% echo $0
zsh
% cat cão.txt
hi dog
Run Code Online (Sandbox Code Playgroud)
我的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"
Run Code Online (Sandbox Code Playgroud)
和LANG变量我试过它是空的,"en_US.UTF-8"还有"pt_PT.UTF-8"。此外,我locale在进入“普通”zsh会话之前和之后仔细检查了设置是否完全相同。
此外,它在默认终端 OSX 应用程序和 iTerm2 中的工作方式相同。
我正在使用 zsh 版本5.0.7。
这里是我的.zshrc文件,以及我使用的其他点文件。
我已经尝试oh-my-zsh以自动和手动方式卸载和安装它,但始终存在使用自动完成显示重音字符的相同问题。
这看起来像是正常的默认zsh行为。在自动完成过程中是否组合显示组合字符由combining_charsshell 选项控制。要完成此操作c\xc3\xa3o,请将其放入您的~/.zshrc文件中。
setopt combining_chars\nRun Code Online (Sandbox Code Playgroud)\n\n我无法重现您的行为,这是非登录 ( zshvs -zsh) shell 的默认行为。
zsh -f在和 非登录的情况下zsh,它们仅获取配置文件/etc/zshenv,而不获取其他配置文件。也许您已/etc/zshenv进行配置setopt combining_chars,并且初始化序列中稍后的某些操作正在重置它。