在 Windows 下的 Bash 中,如何用 ESC 清除一行而不是使用 Ctrl+u?

在 Windows 下的 Bash 中,如何用 ESC 清除一行而不是使用 Ctrl+u?

我在 Windows 中使用 bash,包括 Cygwin 和 Git Bash(Windows 版 Git 的一部分)。与 Windows 不同,bashcmd.exe Esc不会清除行,只会清除Ctrl+ U。我怎样才能清除行呢?

谢谢!

答案1

我没有安装适用于 Windows 的 Cygwin 或 Git 来测试这一点,但这里有 Unix 答案:

在您的(cygwin)主目录中创建一个名为“.inputrc”的文件,并在其中添加以下行:

Escape: unix-line-discard

在我最喜欢的 Unix 变体中,Control-u 被映射到 unix-line-discard,它会删除光标前的所有内容。如果您希望它删除整个输入行(包括光标右侧的任何内容),请使用“kill-whole-line”而不是“unix-line-discard”。

请注意,您的 bash 行编辑模式可能会吞噬 Escape。我的系统上的 Bash 默认为 vi 样式的行编辑模式 ( set -o vi),您可能知道,vi 完全与 Escape 键有关,因此当我尝试此操作时,我必须按两次 Escape,因为第一次被 vi 样式的编辑模式吞噬。我不是 emacs 专家,所以我不知道 emacs 样式的行编辑模式在按下 Escape 键时会做什么。

还要注意,.inputrc 文件在 shell 启动时被读取,因此在编辑 ~/.inputrc 后,请关闭 shell 并打开一个新 shell 以查看更改是否有效。

相关内容