Terminal OS X Odpowiednik Ctrl + Lewo / Ctrl + Prawo


19

W systemach Windows i Linux zawsze mogłem nacisnąć ctrl+ lub ctrl+, aby pominąć słowo w lewo lub w prawo w terminalu. W edytorach tekstowych wydaje się, że + / działa, ale nie ma kości w terminalu. Przeszukałem Google i nie znalazłem nic poza stroną Wikipedii, która twierdzi, że + B/ Fwykonuje to zadanie, ale drukuje tylko ∫ i ƒ znaków na moim terminalu (lub ı i Ï, jeśli trzymam ). Jakieś pomysły?

Odpowiedzi:



12

To również doprowadzało mnie do szaleństwa, jednak nie chciałem poprawki specyficznej dla Terminala, ponieważ nie używam Terminala, a możliwość SSH do mojego systemu OSX musiała również używać odpowiednich skrótów klawiszowych.

Ponadto osobiście nie dbałem o klucz, jak omówiono wcześniej; Chciałem zachować kombinację ctrl+ / , do której jestem przyzwyczajony w systemie Linux.

Aby rozwiązać ten problem, dodałem do mojego ~/.profile:

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

Zauważ, że pierwsze dwa dotyczą bash w Terminalu ; dwa ostatnie dotyczą bash w iTerm2 i przychodzących połączeń ssh . Nie pytaj mnie, dlaczego emulacja klawiatury jest inna;)

Dla przypomnienia, byłem w stanie znaleźć, jakie były naprawdę kody klawiszy dzięki podpowiedzi z tej odpowiedzicat > /dev/null na przepełnienie stosu : Możesz uruchomić, aby monitorować dokładne kody kluczy wysłane podczas kombinacji klawiszy.

(Zauważ, że dla mnie, kiedy uruchamiam cat > /dev/nulli naciskam ctrl+ , tworzy ^[[1;5D. Twój dokładny kod może się różnić , ale pierwszy ^[jest przedstawiony jako \e, jak pokazano w moim przykładowym kodzie.)

BTW, jeśli chcesz zobaczyć wszystkie aktywne skróty klawiszowe bash, uruchom bind -p.


Lubię używać xxddo badania klawiatury. Możesz zobaczyć znak wyświetlany podczas wpisywania, a następnie xxdemituje wartość szesnastkową podczas wpisywania return.
Chris Page

Doskonały! Właśnie tego szukałem :) Nigdy nie miałem szczęścia, aby tworzyć powyższe ustawienia „specyficzne dla aplikacji”, ale to po prostu działa!
bisko

Upewnij się, że control + lewy / prawy nie są zamapowane na „przełączanie spacji” w sysprefs> klawiaturze> skrótach> exposé. Nie miałem innych otwartych przestrzeni, więc wyglądało na to, że moja klawiatura nie działa.
sudo

6

Począwszy od Mac OS X Lion 10.7, Mapy terminali domyślnie - / do esc+ B/ F, więc teraz jest to wbudowane w bash i inne programy, które używają tych skrótów klawiszowych kompatybilnych z Emacsem.


5

jeśli wiesz, jak korzystać z vi, możesz także włączyć tryb edycji linii vi, używając set -o viw swoim .bash_profilelub w dowolnym momencie wiersza poleceń. Następnie możesz przełączać się między trybem polecenia vi i trybami wstawiania. Możesz więc nacisnąć klawisz Escape, a następnie użyć poleceń vi do nawigacji po linii:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Po osiągnięciu prawidłowej pozycji możesz użyć innych poleceń vi, aby przejść do trybu wstawiania lub dołączania lub usuwać znaki jeden po drugim itp.


Nigdy nie wiedziałem, że możesz użyć 0 na początku linii, zawsze użyłem ^
Jason Salaz

1
@vxjasonxv: ya, ^ przesuwa się na pierwszy znak bez spacji, 0 przesuwa się do pierwszej kolumny (co prawdopodobnie już zauważyłeś, ale pomyślałem, że wyrzucę to dla innych: P)
Robert S Ciaccio

1
WOW, JEST JESZCZE LEPSZE, jeszcze tego nie zauważyłem! O rany, ta funkcja (pierwsza nie biała) ^ zawsze mnie wkurzyła. Dziękuję Ci.
Jason Salaz

Oczywiście ESC ^jest świetna, gdy jej potrzebujesz, denerwuje ją tylko wtedy, gdy chcesz zrobić coś zupełnie innego :)
ocodo 25.10.11

3

Otwórz terminal, przejdź do preferencji, klawiatury. Na liście znajdziesz „ctrl kursor w prawo” i „ctrl kursor w lewo”.
Zmień przypisane akcje na odpowiednio „\ 033f” i „\ 033b”, a będziesz mógł używać ctrl+ i ctrl+ do poruszania się, bez utraty klawisza Alt.


2

Wygląda na to, że esc+ Bi esc+ Fsą domyślnie mapowane, aby przejść do początku i końca słów. Chociaż w moim systemie nie możesz przytrzymać, escale musisz nacisnąć go ponownie dla każdego słowa.


1
Esc nigdy nie jest modyfikatorem, po prostu przechodzi w tryb „Escape”, gdy go naciśniesz, uważaj to za modalny sposób robienia rzeczy, w przeciwieństwie do shift / ctrl / meta itp. (W każdym razie w
schemacie Readline

0

Najnowsza wersja systemu operacyjnego mapuje to na Spaces. Nawet jeśli spacje są wyłączone, skróty klawiszowe mogą nadal ulegać zwarciu w tej ukrytej lokalizacji:

Klawisze kursora Terminal.app: wyłącz Preferencje systemowe -> Skróty -> Kontrola misji -> Przesuń w lewo spację

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.