我可以在终端中获得更好的制表符补全功能吗?

gfr*_*ies 0 bash auto-completion

假设我在一个文件夹中有三个文件名以 s 开头的文件。

如果我输入 s 并点击Tab,我会听到错误提示音,并且终端中没有完成任何操作。我必须输入足够的文件名,以便在它自动完成之前明确终端我想要的文件Tab

因此,如果我有文件名schoolscuba、 和scary,并且我想开办学校,我必须输入 sch ,否则它不会自动完成。我见过一些例子,您可以键入内容s,然后可以Tab一一浏览所有选项。

此功能不可用还是我必须在某处更改设置?

Art*_*ild 5

我相信我已经配置了您想要的解决方案。要使其在 Bash 中工作,请将此行添加到您的/etc/inputrc(用于全局设置)或~/.inputrc仅适用于您的用户):

"\e[Z": menu-complete
Run Code Online (Sandbox Code Playgroud)

这行代码将使当您点击Shift+时Tab,它会循环显示您所输入内容的可能解决方案。

例如,如果您所在的目录中有 3 个以 开头的文件s,则键入echo s并点击Shift+Tab将循环显示这 3 个文件。

我发现这个快捷方式在执行 时特别有用systemctl status ..,我只需键入sctl st(我有一个别名),然后双击Tab即可循环到status

我发现最好仍然坚持常规Tab行为,因为在某些情况下您仍然希望使其在 double 上显示可能的完成Tab

另外,请注意,如果您刚刚开始输入文件名,自动完成功能还将查看PATH.

因此,如果您只需键入文件名的开头s并按Shift+ Tab,它将循环显示当前目录中的文件名以及PATH. 这就是PATH工作原理。