当我在 bash 终端中按 Esc 4 次时,它显示如下内容:
-bash-4.1$
Display all 2837 possibilities? (y or n)
:
!
./
[
[[
]]
{
}
411toppm
a2p
ac
accept
accton
aclocal
aclocal-1.11
acpi_listen
Run Code Online (Sandbox Code Playgroud)
这是什么功能,如何找到这些条目?(第二次按下 esc 时,终端会发出声音警报。)
Kus*_*nda 12
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete
Run Code Online (Sandbox Code Playgroud)
这说明Emacs 命令行编辑模式下Meta+Esc(and Ctrl+i)的默认键绑定是 Readline 函数complete
。该Meta键通常Esc位于没有显式Meta键的键盘上。这个函数的 Readline 文档说
尝试对 point 之前的文本进行补全。实际执行的完成是特定于应用程序的。例如,Bash 尝试将文本作为变量(如果文本以 开头
$
)、用户名(如果文本以 开头~
)、主机名(如果文本以 开头@
)或命令(包括别名和函数)依次完成。如果这些都不匹配,则尝试文件名补全。另一方面,Gdb 允许完成程序函数和变量,并且仅在某些情况下尝试完成文件名。
关于您对Anthon 的回答的评论:不,按Esc两次与Tab一般按不同(除非它在将它们都映射到相同操作的程序中,如 Readline 默认情况下所做的那样)。不过Ctrl+i 是一样Tab,就像Ctrl+[是一样Esc。这意味着如果你愿意,你可以用Ctrl+[ Ctrl+[in完成bash
,只要 doubleEsc绑定到 Readlinecomplete
函数。例如,如果您在没有 Escape 键的 VT220 终端上工作,这会很方便: