我定义了几个shell函数,.zshrc
这些函数可以节省键入并允许与屏幕集成。例如:
function s()
{
screen -t "$1" ssh "$@"
}
但是,当我使用这些Shell函数时,我无法利用zsh的内置命令完成功能。(对于SSH,将基于known_hosts和ssh_config自动完成主机名)。挂接到我为之创建包装器的命令的现有完成机制上的首选方法是什么?
编辑:
感谢Gilles在下面的回答。使用compdef似乎是实现此目的的方法,但有趣的是,它似乎无法统一工作。在这种情况下,我具有以下设置:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
包装函数'm'的完成按预期工作,但是函数's'的完成不起作用;而不是尝试完成主机名,它可以通过单击“制表符”时向我提供文件列表来回退到默认的自动完成功能。SSH完成的处理方式是否有些奇怪,这意味着我需要做进一步的事情?