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.


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.

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


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


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.