如何将这个 bash 完成函数转换为 zsh 完成函数?
How can you convert this bash completion function to a zsh completion function?
如何将这个 bash 完成函数转换为 zsh 完成函数?
此 bash 功能允许您使用制表符完成当前工作目录上方的目录名称,以便您可以更快、更准确地向上导航文件层次结构。
示例:
$ pwd
/Users/me/Animals/Mammals/Ungulates/Goats/Ibex
$ upto Animals
$ pwd
/Users/me/Animals
代码:
function upto {
if [[ -z ]]; then
return
fi
local upto=
cd "${PWD/\/$upto\/*//$upto}"
}
_upto()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local d=${PWD//\//\ }
COMPREPLY=( $( compgen -W "$d" -- "$cur" ) )
}
complete -F _upto upto
我想在 zsh 中有一个类似的,但我不完全理解它的工作原理,更不用说如何为 zsh 修改它了。
试试这个补全函数
_upto() {
local parents;
parents=(${(s:/:)PWD});
compadd -V 'Parent Dirs' -- "${(Oa)parents[@]}";
}
使用 compdef _upto upto
启用它。
通过创建一个深度嵌套的文件夹来测试它:f=/tmp/foo/bar/one/two/three;mkdir -p $f;cd $f
。输入 upto <Tab>
应该会得到
three two one bar foo tmp
要反转目录(即从根而不是 ..
开始提案),从 compadd
行中删除 (Oa)
标志。
如何将这个 bash 完成函数转换为 zsh 完成函数?
此 bash 功能允许您使用制表符完成当前工作目录上方的目录名称,以便您可以更快、更准确地向上导航文件层次结构。
示例:
$ pwd
/Users/me/Animals/Mammals/Ungulates/Goats/Ibex
$ upto Animals
$ pwd
/Users/me/Animals
代码:
function upto {
if [[ -z ]]; then
return
fi
local upto=
cd "${PWD/\/$upto\/*//$upto}"
}
_upto()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local d=${PWD//\//\ }
COMPREPLY=( $( compgen -W "$d" -- "$cur" ) )
}
complete -F _upto upto
我想在 zsh 中有一个类似的,但我不完全理解它的工作原理,更不用说如何为 zsh 修改它了。
试试这个补全函数
_upto() {
local parents;
parents=(${(s:/:)PWD});
compadd -V 'Parent Dirs' -- "${(Oa)parents[@]}";
}
使用 compdef _upto upto
启用它。
通过创建一个深度嵌套的文件夹来测试它:f=/tmp/foo/bar/one/two/three;mkdir -p $f;cd $f
。输入 upto <Tab>
应该会得到
three two one bar foo tmp
要反转目录(即从根而不是 ..
开始提案),从 compadd
行中删除 (Oa)
标志。