Jak sprawić, by klawisze Ctrl przesuwały się o jedno słowo w przód w Cygwin?

97

W domyślnej instalacji Cygwin użycie CTRL-STRZAŁKA W LEWO lub CTRL-STRZAŁKA W PRAWO po prostu drukuje 5C lub 5D zamiast pomijać słowo na raz zgodnie z oczekiwaniami.

Klawisz Home / End działa poprawnie, więc ponowne mapowanie powinno być możliwe.

Tomek
źródło
Zauważ, że to pytanie dotyczy Cygwin, ale może mieć ogólne zastosowanie w systemach Unix / Linux. Jeśli korzystasz z PuTTY i stwierdzisz, że rozwiązania tutaj nie działają, spójrz na pytanie dotyczące tego, jakich kodów użyć dla PuTTY .
palswim
Zdarzyło mi się to również pod pełnym linuksem; na pewne porady online, dodałem ~/.inputrcplik - który anulował wszystkie domyślne ustawienia Linuksa mięty. Możesz je odzyskać, dodając $include /etc/inputrcdo górnej części ~ / .inputrc (zakładając, że / etc / inputrc jest ogólnosystemowym inputrc, który jest w Linux Mint)
użytkownik208769

Odpowiedzi:

133

Znalazłem rozwiązanie , zamieszczając je tutaj dla potomności.

Dodaj następujące wiersze do ~/.inputrc( C:\cygwin\home\<username>\.inputrc):

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

Po C-x C-rzakończeniu możesz nacisnąć przycisk, aby ponownie odczytać .inputrcplik dla bieżącej sesji.

Warto zwrócić uwagę, jeśli chcesz mieć inne podobne dostosowania: Użyj 5Ai 5Bdla strzałek w górę i w dół oraz 2xdla wersji przesuniętych.

„Oficjalne” mapowanie klawiszy opisano w Podręczniku użytkownika Bash , ale w celu szybkiego znalezienia mapowania klucza w bash:

  1. wpisz Ctrl+V
  2. wpisz sekwencję klawiszy, która Cię interesuje (np. Alt+ ). Zostanie wydrukowane^[[1;3C
  3. usuń wiodące ^[i zastąp je, \eaby zrobić\e[1;3C
  4. umieść tę wartość w swoim .inputrcpliku.
Tomek
źródło
Niektóre kody klawiatury w ogóle się nie wyświetlają, np. <kbd> Shift </kbd> + <kbd> Enter </kbd>. Jak znaleźć te kody klawiatury za pomocą Mintty / Windows / Cygwin?
CMCDragonkai
14

Możesz ponownie załadować plik .inputrc poprzez:

bind -f ~/.inputrc

Źródło

Kdt
źródło
2
Jest to przydatne, ale tak naprawdę nie jest odpowiedzią na pytanie - może byłoby lepiej jako komentarz do innej odpowiedzi?
Martin Thompson
Dodano do powyższej odpowiedzi @ Toma
dovetalk
7

Jeśli chcesz coś, co będzie działać bez niestandardowych ustawień środowiska, na przykład podczas pracy na wspólnym koncie na serwerze lub po prostu w celu ograniczenia ilości używanej niestandardowej konfiguracji, Bash ma wbudowane w to Cygwin.

Mianowicie Alt+, faby przejść do przodu i Alt+, baby przejść do tyłu.

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

Costa
źródło
4
Dzięki, choć znam te klucze i używam ich. Używam także klawiszy strzałek, gdy jest to wygodne i nie chcę, aby wyrzucały kody ucieczki zamiast robić rozsądne czynności i przesuwać kursor.
Tom
0

Kiedy używałem rxvt z cygwinem, znalazłem rozwiązanie pod tym linkiem, które dla mnie zadziałało: control_arrow_keys_in_rxvt .

Dodaj następujące wiersze do ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word
Peter Tran
źródło
Wtedy dodatkowa warstwa zmienia przesyłane klucze (ale nie odpowiada na zadane pytanie).
Nikana Reklawyks,
0

To rozwiązanie działa również w msys2konsolach:

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

Wystarczy umieścić te kombinacje klawiszy w .inputrcpliku.

f0nzie
źródło