Problem z terminalem z klawiszami Ctrl + Strzałka i Shift + Strzałka


10

Używam Mavericks na nowym Macbooku Pro. Kiedy używam klawiszy Ctrli Shiftrazem ze strzałkami, dostaję jakieś kody kluczy jako dane wyjściowe w terminalu. Jestem całkiem pewien, że ten problem jest nowy i że nie wydarzyło się kilka dni temu. Ale nie jestem w 100% pewien. W każdym razie tak się dzieje:

Jeśli nacisnę Ctrl+ (strzałka w lewo), ;5Dzostanie wyprowadzony na terminal. Podobnie:

  • Ctrl+ (Strzałka w prawo);5C
  • Shift+ Wyjścia (strzałka w lewo);2D
  • Shift+ (Strzałka w prawo);2C

Jak już wspomniałem, jestem całkiem pewien, że do dzisiaj mogłem używać tych skrótów do przechodzenia między słowami i zaznaczania tekstu. Czy ktoś już to widział? Przejrzałem już niektóre pytania dotyczące skrótów klawiszowych, ale nie znalazłem żadnych odniesień do tego konkretnego problemu.

Pamiętaj też, że wyłączyłem skrót klawiaturowy, który porusza się między komputerami za pomocą Ctrlklawiszy strzałek +.


Twoje klawisze strzałek zostały przemapowane gdzieś do użycia \],-(odpowiednik hexu 5C 5D 2C 2D ascii).
l'L'l

Czy chciałbyś opracować? Jestem bardzo nowy w OSX. Gdzie miałbym szukać tych zmian?
Henrik Söderlund

Odpowiedzi:


8

To samo dzieje się na moich maszynach wirtualnych 10.9 i 10.8. Strzałki kontrolne i strzałki Shift domyślnie nic nie robią w bashu. Gdzie nawet używałeś strzałek Shift, aby zaznaczyć tekst? emacs czy vim?

Jeśli chcesz używać klawiszy Control-left i Control-Right, aby przechodzić między słowami w bash, dodaj te linie do ~/.inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Aby użyć strzałek Shift w Emacsie, odwróć mapę do góry \e[1;2A, do dołu \e[1;2B, do prawej \e[1;2Ci do lewej \e[1;2D. Jeśli naciśnięcie klawisza Shift powoduje wyświetlenie komunikatu podobnego do <select> is undefined, spróbuj ustawić TERMna xterm-vt220.


Chyba się myliłem, używając strzałek Shift do zaznaczania tekstu. Jestem programistą z 13-letnim doświadczeniem, ale to moja pierwsza wizyta w OSX. Jak dotąd bardzo zdezorientowany.
Henrik Söderlund

Zrozumiałem .inputrc. Wszędzie szukałem pliku, dopóki nie zdałem sobie sprawy, że muszę go sam stworzyć. :) Teraz mogę znów przechodzić między słowami. Dziękuję za to, zaznaczam to jako odpowiedź. Jeszcze tylko kilka pytań, więc jestem w 100% czysty: 1: Teraz przełączyłem się na korzystanie z iTerm2. Czy jest jakiś sposób, używając .inputrc lub w inny sposób, aby uzyskać Shift + Strzałka w lewo i Shift + Strzałka w prawo, aby zaznaczyć tekst w iTerm2? 2: Wspomniałeś o emacs i vim. Czy to nie są tylko edytory tekstu? Jak miałbym używać ich jako terminala?
Henrik Söderlund

Nie znam żadnego sposobu, aby modyfikować zaznaczenie w lewo i Shift w prawo w iTerm 2. Pomyślałem, że mógłbyś użyć ich tylko w Emacsie.
Lri

W porządku. Na razie będę musiał bez tego żyć. Dzięki!
Henrik Söderlund

1
Nie działa na komputerach Mac Sierra, Shift + strzałka w prawo lub Shift + strzałka w lewo nic nie robi.
Alessandro C

3

Ctrl + Lewo / Prawo są domyślnie obecne w Terminalu (macOS 10.12) (Preferencje → Profile → Klawiatura). Próbowałem dodać Shift-Up / Down, ~/.inputrcale nic się nie stało.

~/.inputrc:

"\e[1;2A": shift-up
"\e[1;2B": shift-down

Zamiast tego dodałem programowo Shift w górę / w dół w Preferencjach terminalu. Problem polega na tym, że jest on przechowywany dla każdego profilu , z którego macOS ma domyślnie tuzin, więc musisz zapętlić wszystkie profile (jeden wymieniony Oceantutaj), aby dodać klucze do wszystkich dostępnych profili. Nie wiem, plutilczy defaultsmam trochę magii, aby to ułatwić, czy też musisz użyć parsera XML.

~/Library/Preferences/com.apple.Terminal.plist:

"Window Settings" = {
  Ocean = {
    keyMapBoundKeys = {
      "$F700" = "\033[1;2A";
      "$F701" = "\033[1;2B";

-1

Alternatywa:

W preferencjach terminalu przejdź do Zaawansowane i odznacz „Wklej nowe linie jako zwrot karetki”.

Następnie użyj Sublime do napisania skomplikowanego com

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.