bash-completion:如何在不同的选择中进行选择

bash-completion:如何在不同的选择中进行选择

在 bash 中,如何从显示的列表中选择一个选项TAB

例如,假设vim <TAB>显示不同的可能性txt1 txt2 txt3。我如何选择第一个(txt1)?

编辑:

让我更精确地进一步阐述前面的例子:

假设当前文件夹仅包含一个名为 的文件txt1。如果我写入vim t<TAB>,自动完成功能将正常工作,即显示vim txt1

但是,如果文件夹包含三个文件txt1、、,txt2txt3该命令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

如果您输入第一个字母fTAB第一次点击,它会自动将其补全为file。如果您TAB第二次点击,它会显示所有以 开头的可用变体file。有三个文件以file前缀开头,bash不知道您想要哪个。

$ vim.tiny file                    # the second tab
file1.txt  file2.txt  file3.txt 

然后,如果您输入下一个符号并且没有其他以该符号开头的文件,它会自动完成它:

  • $ vim.tiny file1# 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

相关内容