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?

Patrick Krecker
źródło

Odpowiedzi:

12

Możesz użyć klucza, ale musisz wybrać opcję użycia go jako klucza „meta”: alternatywny tekst

Gdy to zrobisz, + Fi + Bbędą działać zgodnie z oczekiwaniami.

mipadi
źródło
super ... to doprowadzało mnie do szaleństwa od dłuższego czasu. dzięki.
Robert S Ciaccio,
2
Sprawdź także apple.stackexchange.com/q/1391/115 pod kątem możliwych „wad” tej opcji.
Martin Marconcini,
Fajna odpowiedź. +1
Soner Gönül,
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.

adamrmcd
źródło
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.

Chris Page
źródło
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.

Robert S. Ciaccio
źródło
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.

Agos
źródło
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.

Derek Morrison
źródło
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ę

Keith Knauber
źródło