智能标签补全(用于目录)?

智能标签补全(用于目录)?

是否有具有更智能的 Tab 补全功能的 shell 版本?

我希望能够打字

cd foo-<TAB>

然后它会向我显示可能的完成情况以及我可以输入的数字来选择其中一个:

cd foo-<TAB>
(1) foo-bar1  (2) foo-bar2  (3) foo-bad

因此,在<TAB>我输入之后3,它会带我到foo-bad。或者,使用箭头键代替输入数字也可以。

答案1

您可以menu-complete在 Bash 中启用此功能,以便每次按 Tab 键时逐行浏览命令行上的条目。这并不是您真正想要的。如果您想尝试,请在命令提示符下执行以下操作:

bind '"\C-i": menu-complete'

为了使其持久,请将其添加到您的~/.inputrc文件中:

"\C-i": menu-complete

Zsh 有一个功能,允许您使用箭头键选择条目。将此(或其他变体)添加到您的~/.zshrc文件中:

zstyle ':completion:*' menu select=0

查看man zshcompsys并搜索“select=”(它位于menu“标准样式”部分)以获取更多信息。

否则,在 Bash 中,您可以编写一个函数(甚至创建自己的完成函数),该函数将根据命令执行某些操作select。这非常简单:

$ select a in x y z; do cd $a; done
1) x
2) y
3) z
#?

您必须进行大量充实才能让它完成您想要的事情。

答案2

你已经使用过正常补全功能了吗?尝试一下

complete -d cd pushd rmdir

在你的壳里看看它是否足够接近你想要的。

您还可以尝试比 bash 具有更好完成度的 zsh。

相关内容