Answers:
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete
这表明Emacs命令行编辑模式下Meta+Esc(和Ctrl+i)的默认键绑定是Readline函数complete。该Meta键通常Esc在没有显式Meta键的键盘上。该功能的Readline文档说
尝试对点之前的文本执行补全。实际执行的完成是特定于应用程序的。例如,Bash尝试依次完成将文本视为变量(如果文本以开头
$),用户名(如果文本以开头~),主机名(如果文本以开头@)或命令(包括别名和函数)。如果没有一个匹配项,则尝试完成文件名。另一方面,Gdb允许完成程序功能和变量,并且仅在某些情况下才尝试完成文件名。
关于您对Anthon答案的评论:不,按Esc两次与Tab通常按不一样(除非它在程序中将它们映射到相同的动作,如Readline缺省)。但是Ctrl+i 是一样的Tab,就像Ctrl+[是一样的Esc。这意味着,只要将Double 绑定到Readline 函数,就可以使用Ctrl+[ Ctrl+[in 来完成。例如,如果您在缺少Escape键的VT220终端上工作,这将很方便:bashEsccomplete
complete函数,则它们是相同的,它们在默认情况下是默认的,但通常不是这样(即,按键不“相同”)。您不能在所有地方都用Esc-Esc代替Tab,仅在具有readline功能的程序中。但是,您可以在任何地方用Ctrl-i代替Tab或用Ctrl- [代替Esc。
Tab在的输出中看不到bind -p。这是为什么?也许因为Tab是“硬编码的”并且无法绑定?
\C-i。这在硬件级别上是等效的。
Esc两次按(或\M-\e)键与Tabbash 相同?