Как сделать так, чтобы клавиши ctrl-стрелки двигались вперед / назад по слову за раз в Cygwin bash?
В установке Cygwin по умолчанию при использовании CTRL-LEFTARROW или CTRL-RIGHTARROW просто печатается 5C или 5D вместо пропуска слова за раз, как ожидалось.
Клавиши Home/End работают правильно, поэтому переназначение должно быть возможным.
5 ответов
Нашел решение, разместив его здесь для потомков.
Добавьте следующие строки в ~/.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:
- нажмите Ctrl + V
- введите интересующую вас последовательность клавиш (например, Alt + →). Это напечатало бы
^[[1;3C
- удалить ведущий
^[
и заменить его на\e
делать\e[1;3C
- поместите это значение в ваш
.inputrc
файл.
Если вам нужно что-то, что будет работать без пользовательских настроек среды, например, при работе с общей учетной записью на сервере или просто для ограничения объема используемой пользовательской конфигурации, Bash имеет встроенные средства для этого, которые работают в Cygwin.
А именно Alt+f, чтобы двигаться вперед, и Alt+b, чтобы двигаться назад.
http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html
При использовании rxvt с cygwin я обнаружил, что решение по этой ссылке работает для меня: ht tp://snarfed.org/control_arrow_keys_in_rxvt_tcsh_and_emacs.
Добавьте следующие строки в ~/.inputrc
:
"\eOd": backward-word
"\eOc": forward-word
Это решение также работает в msys2
консоли:
"\e[1;5C": forward-word # ctrl + right
"\e[1;5D": backward-word # ctrl + left
Просто поместите эти комбинации клавиш в .inputrc
файл.