Używam Ctrl- ←i Ctrl- →na każdym systemie Linux, na którym pracuję, ale te kombinacje klawiszy nie działają w trybie bash na moim Macbooku Pro. Działa pod systemem Snow Leopard, a ja korzystam z wbudowanej aplikacji Terminal.
Kombinacje klawiszy nie są przechwytywane przez nic przed ani przez Terminal, ponieważ jeśli ssh na jednym z moich serwerów Linux, mogę użyć Ctrl- ←/, →aby przejść do następnego / poprzedniego słowa w wierszu poleceń. Jednak gdy wypróbowuję tę kombinację klawiszy w bash na moim Macbooku, po prostu dostaję „C” dla prawej strzałki i „D” dla lewej strzałki.
Jakieś pomysły na to, jak sprawić, by te klucze działały w Darwin Bash?
Odpowiedzi:
System OS X używa klucza emacs, wiążąc mój domyślny. To prawda, że praktycznie każda aplikacja na OS X jest raczej przyjemna. Oznacza to, że rzeczy takie jak Ca i Ce zaczynają się / kończą linii. Dostajesz także sprytne zabójstwo na słowo z M-backspace, och, i zabójstwo z Ck.
Powinno to oznaczać, że w twoim terminalu słowo do przodu / do tyłu jest powiązane odpowiednio z Mf i Mb (M = Meta = alt / opcja), jednak tak nie jest. W systemie OS X słowo forward / backword są domyślnie powiązane z M- → i M- ←.
Możesz zmienić to zachowanie, zmieniając sposób, w jaki biblioteka GNU Readline jest skonfigurowana dla twojego konta. Odbywa się to w twoim
~/.inputrc
pliku. Możesz uzyskać dużą listę możliwych do powiązania poleceń,man readline
a także w dokumentacji online takiej jak tutaj. .Aby odpowiedzieć na twoje pytanie, chcesz ponownie przypisać to, co robi Readline, gdy widzi C- → i C- ←, aby zrobić to, co robi na serwerze Linux.
Składnia
~/.inputrc
pliku jest bardzo prosty, co chcesz zrobić:key-sequence: action
.To powinno być to, czego potrzebujesz, aby uzyskać pożądane zachowanie:
Oto kolejna strona z dodatkowymi przydatnymi powiązaniami.
(Prawdopodobnie możesz uniknąć kopiowania / etc / inputrc z twojego Linux-a do OS X ~ / .inputrc)
źródło
\e[1;5C
a\e[1;5D
także uruchamiaćforward-word
ibackward-word
.wstaw
~/.inputrc
następujące wiersze:źródło
Obecnie wydaje się, że zmieniły się sekwencje specjalne, które Ctrl-Arrows wyświetla w terminalu. Oto, co działa dla mnie na dzień dzisiejszy (koniec 2018 r.):
"\e[1;5C": forward-word "\e[1;5D": backward-word
Uwaga: rzeczywiste sekwencje specjalne można zawsze ustalić, wpisując
cat -v
Terminal i naciskając Ctrl-Strzałka w lewo lub Ctrl-Strzałka w prawo. Oto przykładowe dane wyjściowe dla mojej własnej strzałki Ctrl-Strzałka w lewo:^[[1;5C ^[[1;5C
Przekładać się na
.inputrc
slangu, wymienić znak ucieczki^[
z\e
i trzymać wynik wewnątrz podwójnych cudzysłowów.źródło
Jak wspomniano @ bhh1988, konfiguracja Mission Control uniemożliwia klawiszom Ctrl pracę z klawiszami strzałek w
bash
. Nie chciałem ingerować w te skróty, więc zamiast tego używam klawisza Option (tj. Alt). Obecnie na mojejve używam niemieckiej klawiatury (nie wiem, czy to jest istotne). Wstawiam poniższe,.inputrc
aby używać opcji-strzałka w lewo i opcja-strzałka w prawo do przemieszczania się między słowami.źródło
AKTUALIZACJA Sty 2020
W najnowszych wersjach OSX domyślną powłoką jest
zsh
. Dlatego magiczne zaklęcie, aby ctrl-arrowleft i ctrl-arrowright działało zgodnie z oczekiwaniami, jest następujące:(włóż to do swojego
.zshrc
)źródło