在 bash 中获得更多有用的制表符补全提示?

在 bash 中获得更多有用的制表符补全提示?

假设我有一个目录,其中包含一些文件,如下所示:

$ ls
file1  file2  file3

我想在 Bash 中做一些制表符补全:

$ cat file<tab>
file1  file2  file3  

我记得看到有人使用制表符补全,然后 shell 将后面的部分加粗,所以在这种情况下,它会将文件名的1,2和加粗3,所以它看起来像这样:文件1 文件2文件3

它将告诉您下一步应该输入什么。

我认为这是的一个功能zsh,但是有没有什么办法可以实现它呢bash

答案1

我不知道直接移植的功能,但有一种方法可以解决这个问题bash可编程完成允许您指定当您按下依赖于调用程序的 Tab 键时您想要看到的内容,允许(作为一个流行的例子)ssh[tab] 显示自动完成选项~/.ssh/known_hosts

以下是一些有用的资源:

简介、来源和 RPM

用户贡献了“完成”

更多示例

还有更多例子

当然,要复制上面指定的功能,您必须认真研究完成的可编程方面并编写自己的函数。Ubuntu 附带一套自己的用户贡献的完成内容,这是一个很好的起点。

答案2

在基于 Red Hat 的发行版中,有一个 bash-completion 软件包。此软件包会将 /etc/bash_completion.d/ 目录中的某些程序的特定补全行为填入其中。我在 Fedora、Red Hat 和 CentOS 下使用它。

yum install bash-completion

答案3

我使用它是tcsh因为有类似的功能。

这是我的 /etc/csh.cshrc 文件:

if ($?tcsh && $?prompt) then

   bindkey "\e[1~" beginning-of-line # Home
   bindkey "\e[7~" beginning-of-line # Home rxvt
   bindkey "\e[2~" overwrite-mode    # Ins
   bindkey "\e[3~" delete-char       # Delete
   bindkey "\e[4~" end-of-line       # End
   bindkey "\e[8~" end-of-line       # End rxvt

   bindkey -k up history-search-backward
   bindkey -k down history-search-forward

   set filec
   set prompt="[%B%m%b:%~] %n%# "
   set complete = enhance            # important line
   set autolist                      # important line too
   alias ls 'ls -hA --color'
   alias ll 'ls -l'
endif

相关内容