如何在Cygwin bash中一次使ctrl箭头键向前/向后移动一个单词?


97

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

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


请注意,此问题针对的是Cygwin,但可以在Unix / Linux系统上通用。如果您使用的是PuTTY,但发现此处的解决方案不适合您,请查看一个专门用于PuTTY的代码的问题
palswim

在完整的Linux下,我也遇到了这种情况;根据一些在线建议,我添加了一个~/.inputrc文件-废除了所有Linux Mint默认值。您可以通过$include /etc/inputrc在〜/ .inputrc的顶部添加它们来找回它们(假设/ etc / inputrc是您系统范围的inputrc,它在Linux Mint上)
user208769

Answers:


133

找到了一个解决方案,在此发布以供后代参考。

将以下行添加到~/.inputrcC:\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文件中。

某些键盘代码根本没有显示,例如<kbd> Shift </ kbd> + <kbd> Enter </ kbd>。如何通过Mintty / Windows / Cygwin找到这些键盘代码?
CMCDragonkai

14

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

bind -f ~/.inputrc

资源


2
这很有用,但实际上不是问题的答案-也许最好将它作为对另一个答案的评论?
马丁·汤普森

添加到上述
@Tom

7

如果您想要某些无需自定义环境设置就可以工作的东西,例如在服务器上的共享帐户上工作或只是为了限制所使用的自定义配置,Bash内置了可在Cygwin中使用的内置工具。

Alt+ f向前移动和Alt+ b向后移动。

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


4
谢谢,尽管我知道这些键并确实使用它们。在方便时,我也只使用箭头键,而不希望他们喷出转义码,而不是做理智的事情并移动光标。
2013年


0

此解决方案还可以在msys2控制台中使用:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.