[求助]zsh的补全如何写?我想把用拼音补全中文的chsdir脚本移植到zsh
发表于 : 2009-11-08 20:36
刚刚转zsh。相信zsh有这个能力,可惜俺自己看了半天文档也没有弄明白zsh的补全该怎么弄。求zsh达人指点一下!
代码: 全选
tlcr: 0 庚寅年六月初七日 21:08:32 ~
>> dog ~/.zsh/complete | grep -A7 ^_ds
_ds-打印脚本.bash()
{
find "$HOME/应用/脚本" -name '??-*.*' | \
while read line ; do
reply=("${reply[@]}" "${line#$HOME/应用/脚本/}")
done
}
compctl -K _ds-打印脚本.bash ds-打印脚本.bash
tlcr: 0 庚寅年六月初七日 21:08:37 ~
>>
不行唉。比如补全 y,返回结果有 “音乐”,但是因为“音乐”不是以 y 开头,所以 zsh 并不补全它。tusooa 写了:懂不懂?代码: 全选
tlcr: 0 庚寅年六月初七日 21:08:32 ~ >> dog ~/.zsh/complete | grep -A7 ^_ds _ds-打印脚本.bash() { find "$HOME/应用/脚本" -name '??-*.*' | \ while read line ; do reply=("${reply[@]}" "${line#$HOME/应用/脚本/}") done } compctl -K _ds-打印脚本.bash ds-打印脚本.bash tlcr: 0 庚寅年六月初七日 21:08:37 ~ >>
compctl -K function command
compctl -g "glob glob2..." command
大哥,这个我有,我不会的是让zsh补全时调用它啊~~~
代码: 全选
zstyle ':completion:*' user-expand _pinyin
function _pinyin() { reply=($($HOME/bin/chsdir 0 $*)) }
还是不行,执行后没有任何变化。。。adaml 写了:代码: 全选
zstyle ':completion:*' user-expand _pinyin function _pinyin() { reply=($($HOME/bin/chsdir 0 $*)) }
aur/pinyin-completion-git 30.48dd34c-1 [installed] (0)
complete path name based upon the pinyin acronym of Chinese characters