如何在 Cygwin bash 中让 ctrl-arrow 键一次向前/向后移动一个单词?

如何在 Cygwin bash 中让 ctrl-arrow 键一次向前/向后移动一个单词?

在默认的 Cygwin 安装中,使用 CTRL-LEFTARROW 或 CTRL-RIGHTARROW 只会打印 5C 或 5D,而不是像预期的那样一次跳过一个单词。

Home/End 键工作正常,因此可以重新映射。

答案1

找一个解决方案,将其发布在这里以供后人参考。

将以下几行添加到~/.inputrc( C:\cygwin\home\<username>\.inputrc) 中:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

完成后,您可以按C-x C-r重新读取.inputrc当前会话的文件。

如果您想要其他类似的定制,请注意以下事项:使用5A5B表示向上和向下箭头,使用和2x表示移位版本。

“官方”键映射描述在Bash 参考手册,但是要在 bash 中快速找到键映射,请执行以下操作:

  1. 类型Ctrl+V
  2. 输入您感兴趣的按键序列(例如Alt+ )。这将打印^[[1;3C
  3. 删除前导^[并将其替换\e\e[1;3C
  4. 将该值放入您的.inputrc文件中。

答案2

您可以通过以下方式重新加载文件 .inputrc:

bind -f ~/.inputrc

来源

答案3

如果您想要一些无需自定义环境设置即可工作的东西,例如在服务器上使用共享帐户时工作,或者只是为了限制使用的自定义配置量,Bash 有可在 Cygwin 中运行的内置功能。

Alt+f为向前移动,Alt+b为向后移动。

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html

答案4

此解决方案也适用于msys2控制台:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

只需将这些组合键放在.inputrc文件中即可。

相关内容