題 如何在Cygwin bash中使ctrl-arrow鍵一次向前/向後移動一個單詞?


在默認的Cygwin安裝中,使用CTRL-LEFTARROW或CTRL-RIGHTARROW只是打印5C或5D,而不是按預期一次跳過一個單詞。

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


87
2017-08-10 01:17


起源


請注意,這個問題涉及Cygwin,但可以在Unix / Linux系統中具有一般應用。如果您使用PuTTY並發現此處的解決方案不適合您,請查看 一個問題,具體說明用於PuTTY的代碼。 - palswim


答案:


找一個 ,在這裡張貼為後代。

添加以下行 ~/.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 當前會話的文件。

如果您想要其他類似的自定義,請注意以下事項:使用 5A 和 5B 上下箭頭,和 2x 對於轉移版本。

“官方”鍵映射在中描述 Bash參考手冊,但是為了快速找到鍵映射,在bash中:

  1. 類型 按Ctrl+V
  2. 輸入您感興趣的鍵序列(例如, Alt鍵+)。這會打印出來 ^[[1;3C
  3. 刪除前導 ^[ 並替換它 \e 製作 \e[1;3C
  4. 把這個值放在你的 .inputrc 文件。

122
2017-08-10 01:23



某些鍵盤代碼根本不顯示,如<kbd> Shift </ kbd> + <kbd> Enter </ kbd>。如何通過Mintty / Windows / Cygwin找到這些鍵盤代碼? - CMCDragonkai


您可以通過以下方式重新加載.inputrc文件:

bind -f ~/.inputrc

資源


14
2017-11-14 19:27



這是有用的,但不是這個問題的真正答案 - 或許作為對另一個答案的評論會更好嗎? - Martin Thompson
添加到@ Tom的答案上面 - dovetalk


如果您想要在沒有自定義環境設置的情況下工作,例如在服務器上使用共享帳戶或僅限制使用的自定義配置數量時,Bash內置了可在Cygwin中使用的內置插件。

亦即 Alt鍵+F 向前邁進 Alt鍵+b 向後移動

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


7
2018-03-20 21:11



謝謝,雖然我知道這些鍵並且確實使用它們。我也只是在方便時使用箭頭鍵,並且不希望它們噴出轉義代碼而不是做正確的事情並移動光標。 - Tom


當使用rxvt和cygwin時,我發現此鏈接的解決方案對我有用: control_arrow_keys_in_rxvt

添加以下行 ~/.inputrc :

"\eOd": backward-word
"\eOc": forward-word

0
2017-10-15 18:44



這是一個額外的層正在改變傳輸的密鑰(但它沒有回答問題)。 - Nikana Reklawyks


此解決方案也適用於 msys2 控制台:

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

只需將這些組合鍵放入 .inputrc 文件。


0
2018-06-23 16:31