Як змусити клавіші ctrl-стрілки рухатись словом вперед / назад одночасно в базі Cygwin?


97

У встановленні Cygwin за замовчуванням за допомогою CTRL-LEFTARROW або CTRL-RIGHTARROW просто друкується 5C або 5D, а не пропускається слово за той час, як очікувалося.

Домашні / кінцеві клавіші працюють належним чином, тому перезапис повинен бути можливим.


Зауважте, що це питання стосується Cygwin, але може мати загальне застосування для систем Unix / Linux. Якщо ви використовуєте PuTTY і виявите, що рішення тут не підходять для вас, погляньте на питання, які конкретно коди використовувати для PuTTY .
palswim

Це сталося і зі мною під повним Linux; на деякі поради в Інтернеті я додав ~/.inputrcфайл - який анулював усі параметри монетного двору Linux. Ви можете отримати їх назад, додавши $include /etc/inputrcдо початку ~ / .inputrc (якщо припустити, що / etc / inputrc - ваш загальносистемний inputrc, який є на Linux Mint)
user208769

Відповіді:


133

Знайшов рішення , розмістивши його тут для нащадків.

Додайте наступні рядки до ~/.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файл.

Деякі коди клавіатури взагалі не відображаються, як <kbd> Shift </kbd> + <kbd> Enter </kbd>. Як знайти ці коди клавіатури через Mintty / Windows / Cygwin?
CMCDragonkai

14

Ви можете завантажити файл .inputrc за допомогою:

bind -f ~/.inputrc

Джерело


2
Це корисно, але насправді не відповідь на питання - можливо, це було б краще, як коментар до іншої відповіді?
Мартін Томпсон

Додано до відповіді @ Тома вище
dovetalk

7

Якщо ви хочете, щоб щось працювало без спеціальних налаштувань середовища, наприклад, коли ви працюєте над спільним обліковим записом на сервері або просто обмежуєте кількість користувальницької конфігурації, яка використовується, Bash має вбудовані для цього, які працюють у Cygwin.

А саме Alt+ fрухатися вперед і Alt+ bрухатись назад.

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


4
Дякую, хоча я знаю ці клавіші і користуюсь ними. Я просто також використовую клавіші зі стрілками, коли це зручно, і не хочу, щоб вони виписували коди втечі, а не робили здорову справу і рухали курсор.
Том

0

Під час використання rxvt з cygwin я знайшов рішення за цим посиланням, яке працювало для мене: control_arrow_keys_in_rxvt .

Додайте наступні рядки до ~/.inputrc:

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

Ось тоді додатковий шар змінює передані ключі (але він не відповідає на задане питання).
Nikana Reklawyks

0

Це рішення також працює в msys2консолях:

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

Просто помістіть ці комбінації клавіш у .inputrcфайл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.