Как сделать так, чтобы клавиши 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:

  1. нажмите Ctrl + V
  2. введите интересующую вас последовательность клавиш (например, Alt + ). Это напечатало бы ^[[1;3C
  3. удалить ведущий ^[ и заменить его на \e делать \e[1;3C
  4. поместите это значение в ваш .inputrc файл.

Вы можете перезагрузить файл.inputrc через:

bind -f ~/.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 файл.

Другие вопросы по тегам