Bash:按 Escape 4 次

Bash:按 Escape 4 次

当我在 bash 终端中按 4 次转义键时,它会显示如下内容:

-bash-4.1$
Display all 2837 possibilities? (y or n)
:
!
./
[
[[
]]
{
}
411toppm
a2p
ac
accept
accton
aclocal
aclocal-1.11
acpi_listen

这个功能是什么?如何找到这些条目? (第二次按下 esc 时,终端会发出声音警报。)

答案1

$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete

由此可见,Emacs命令行编辑模式下默认的Meta+Esc(and Ctrl+i)键绑定是Readline函数complete。该Meta键通常位于Esc键盘上,没有明确的Meta键。该函数的 Readline 文档说

尝试对点之前的文本执行补全。实际执行的完成是特定于应用程序的。例如,Bash 尝试依次将文本视为变量(如果文本以 开头$)、用户名(如果文本以 开头 ~)、主机名(如果文本以 开头)或命令(包​​括别名和函数)来完成。@如果这些都没有产生匹配,则尝试完成文件名。另一方面,Gdb 允许完成程序函数和变量,并且仅在某些情况下尝试完成文件名。


关于您的评论安东的回答:不,按Esc两次与一般按不同Tab(除非它在将它们映射到同一操作的程序中,就像 Readline 默认情况下那样)。然而Ctrl+i 一样Tab,就像Ctrl+[一样Esc。这意味着您可以根据需要使用Ctrl+[ Ctrl+[in完成补全bash,只要 doubleEsc绑定到 Readlinecomplete函数即可。例如,如果您在缺少 Escape 键的 VT220 终端上工作,这会很方便:

德国VT220键盘

答案2

这就是所谓的文件完成,如果命令行上没有任何前面的命令,bash 将让您完成它所知道的所有 2837 个命令,包括内置命令和在您的文件中找到的命令。PATH

按排序顺序呈现

相关内容