Cygwin 中类似 Linux 的 ^A (ctrl-a)

Cygwin 中类似 Linux 的 ^A (ctrl-a)

我在 Win10 上安装了最新的 Cygwin。出于 *nix 上的习惯,我发现自己点击^A转到当前行的开头,但默认(希望可以修改)行为是它选择控制台的整个文本内容(在我看来这是不一致的,因为其他类似 Emacs 的快捷方式,如^E^D等都^K可以按预期工作)。

有没有办法改变这种情况并执行^A“正确的操作”并带我到行首?

答案1

这是inputrcbind内置

具体来说,你的绑定看起来应该是这样的:

"\C-a": beginning-of-line

或者

bind '"\C-a":beginning-of-line'

顺便说一下,这是默认设置,因此在您的系统中,必须在某处重新定义它。


按照Bash 参考手册:Readline Init 文件语法,“键绑定”部分,您可以运行bind -p来转储所有当前绑定并查看它是否被重新定义。

如果是,请使用它查看启动时读取procmon的文件。bash

如果不是,那不是 Bash 干的。最有可能是你的终端仿真器 - 检查其设置是否有任何键绑定等。

答案2

我通过取消勾选终端选项中的“启用 ctrl 键快捷键”选项解决了这个问题。通过以下方式找到设置 - > 右键单击​​终端框架 - > 选择属性。

答案3

请注意,Ctrl-A 不太可能是 bash 的“绑定”功能用来将光标移动到行首的按键。相反,bash 响应的是 ASCII 代码 1。

对于许多终端程序,按下 Ctrl-A 会导致向前台程序发送 ASCII 代码 1。但是,您的终端程序似乎正在使用 Ctrl-A 来完成其他任务。因此,当您按下 Ctrl-A 时,终端程序不会向 bash 发送 ASCII 代码 1,因此 bash 永远不会收到它。这就是 bash 不移动光标的原因。

一个解决方案,很可能是最好的解决方案,可能是在终端程序的设置中(该页面上的评论和另一个答案已经解决了这个问题)。

但是,可能还有另一种容易使用的解决方法。即:按住 Alt 键,然后按下数字键盘上的数字 1。(如果您使用的是笔记本电脑,有时数字键盘上的数字不可用,除非您还按住标有“Fn”的键。)按下并释放数字键盘上的数字 1 后,释放 Alt 键。

当你释放Alt键时,结果可能是将指定的ASCII码(ASCII码一)发送到终端程序。

还有一种方法,尽管显然要复杂得多,可能是以某种方式将 ASCII 代码放入剪贴板,然后让终端程序粘贴剪贴板的内容(通常可以使用 Ctrl-V 来完成)。

相关内容