![bash-completion:如何在不同的选择中进行选择](https://linux22.com/image/1016986/bash-completion%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E9%80%89%E6%8B%A9%E4%B8%AD%E8%BF%9B%E8%A1%8C%E9%80%89%E6%8B%A9.png)
在 bash 中,如何从显示的列表中选择一个选项TAB?
例如,假设vim <TAB>
显示不同的可能性txt1 txt2 txt3
。我如何选择第一个(txt1
)?
编辑:
让我更精确地进一步阐述前面的例子:
假设当前文件夹仅包含一个名为 的文件txt1
。如果我写入vim t<TAB>
,自动完成功能将正常工作,即显示vim txt1
。
但是,如果文件夹包含三个文件txt1
、、,txt2
则txt3
该命令vim t<TAB>
仅显示txt1 txt2 txt3
,而不会显示任何自动完成功能。
即使在后一种情况下,我怎样才能实现自动完成功能?
答案1
Bash 的工作方式如下:
$ touch file1.txt file2.txt file3.txt video1.avi video2.avi
$ ls
file1.txt file2.txt file3.txt video1.avi video2.avi
如果您输入第一个字母f
并TAB第一次点击,它会自动将其补全为file
。如果您TAB第二次点击,它会显示所有以 开头的可用变体file
。有三个文件以file
前缀开头,bash
不知道您想要哪个。
$ vim.tiny file # the second tab
file1.txt file2.txt file3.txt
然后,如果您输入下一个符号并且没有其他以该符号开头的文件,它会自动完成它:
$ vim.tiny file
1# 1 added to 'file' word
$ vim.tiny file1
- TAB
$ vim.tiny file1.txt # result
如果您希望它以与 中类似的方式工作zsh
,您可以执行以下命令:
bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'
它将按照以下方式运行:
$ vim.tiny f
- TAB
结果:
file1.txt file2.txt file3.txt $ vim.tiny file1.txt
- TAB
- 结果:
$ vim.tiny file2.txt