在 Windows 上使用 git bash 时,多次按 ESC 键,则会阻止输入。几秒钟或更长时间后,可能会显示以下信息:
MyHome+tomxue@DESKTOP-I23OD70 MINGW64 /d $ Display all 5486 possibilities? (y or n)
我找出了几个原因和一些解决方案,但都不起作用。 怎么解决?
您看到的提示是 Bash 的 tab-completion 提示,通知您它将提供太多补全建议。
Bash 的默认键绑定之一是:
$ bind -p | grep complete
"\e\e\000": complete
即
ESC ESC NUL
,显然也会在 ESC ESC
上触发,即按两次 Esc 键。
Esc 发送
ESC
字节,该字节与启动各种特殊键的键码相同;例如Shift-Tab 将发送序列 ESC [ Z
等等。我不知道 ESC ESC NUL
是否应该是某个特殊键的序列,或者 \e\e\000
是否实际上只是 Readline 中的“连续 Esc 两次”(而不是 \e\e
)。
无论如何,此键绑定是通过按 EscEsc 触发的,并调用 tab-completion,因为
complete
与按 Tab 键(由 bind -p
下列出)完全相同的操作"\C-i"
)。
如果您在空输入处调用制表符补全,Bash 将尝试提供系统上所有可能的命令 - 这将需要几秒钟,在此期间 Bash 可能会挂起,因为它正在扫描整个
$PATH
中的可执行文件.