Closed Kzinux closed 9 years ago
我这里构造了完全一样的目录结构,但是不能复现你所说的情况。 唯一的区别是.zshrc不一样。 我认为是你的.zshrc中有奇怪的东西。。
autoload -U compinit compinit
source /usr/share/pinyin-completion/shell/pinyin-comp.zsh
zshrc排查过了,又更彻底地排查了一次,把所有配置都删了只剩下自动补全和拼音补全还是这样,而且我发现只要把拼音补全的配置放在自动补全之前打开之后即使没有运行source ~/.zshrc也跟主楼的图一样的情况。 .zshrc如果这样:
source /usr/share/pinyin-completion/shell/pinyin-comp.zsh
autoload -U compinit compinit
情况如下图:
1.你这个情况为什么会出问题 主要问题是在pinyin-comp之后运行了compinit。 你可以用一个变量锁来解决这个问题。
if [ ! $lock ]
then
autoload -U compinit
compinit
lock=1
fi
2.我原来为什么不会出问题 我用的grml-zsh-config,里面已经做好了类似机制。
# completion system
COMPDUMPFILE=${COMPDUMPFILE:-${ZDOTDIR:-${HOME}}/.zcompdump}
if zrcautoload compinit ; then
compinit -d ${COMPDUMPFILE} || print 'Notice: no compinit available :('
else
print 'Notice: no compinit available :('
function compdef { }
fi
是这样,多谢了。 我安装grml-zsh-config后就好了,不过prompt不兼容,重新设置又弄了会。
正常情况下输入ls * ,然后按tab补全就会自动补全当前目录下的文件名。但是如果执行一次source ~/.zshrc后再输入ls *按tab就会出现拼音补全的界面。 具体见下图: