Jak uzyskać kontrolę + strzałka w lewo, aby cofnąć się o jedno słowo w iTerm2?

114

Czytałem w podręczniku systemu Linux i zauważyłem, że powiedziałem, że mogę używać control + left i control + right, aby przesuwać słowa do przodu i do tyłu podczas edycji.

„Naciśnięcie klawisza Ctrl oraz klawisza strzałki w lewo lub w prawo powoduje przesuwanie słowa do tyłu lub do przodu, podobnie jak naciśnięcie Esc, a następnie B lub F.”

W systemie OS X control+lefti control+rightzwykle kontroluj spacje. Wyłączyłem je. Próbowałem także użyć panelu preferencji, aby ustawić skróty klawiaturowe:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Jednak to nie działa i powoduje ten błąd:

wprowadź opis zdjęcia tutaj

Ponadto, jeśli korzystam z iTerm i używam alt+escapeB lub F, postać porusza się tam iz powrotem. Działo się to przed każdą z moich zmian konfiguracji. Ale naprawdę chciałbym móc używać kontroli + klawiszy strzałek.

cwd
źródło
Nawiasem mówiąc, bardziej oszczędnym sposobem na osiągnięcie tego może być po prostu mapowanie poleceń + lewy i polecenie + prawy zamiast ctrl + lewy i ctrl + prawy. Nie musiałem wyłączać niczego w całym systemie, aby to osiągnąć.
Doktor Mohawk,

Odpowiedzi:

135

grzmotnąć

Dodaj następujące elementy do ~/.inputrc:

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

Zobacz ten zarchiwizowany post na Wiki, aby uzyskać dodatkowe wyjaśnienia. Jeśli altzamiast tego chcesz używać klawisza do przemieszczania słów do słów (np. Domyślne zachowanie OS X), użyj:

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

zsh

Zsh domyślnie nie korzysta z readlinebiblioteki i dlatego nie czyta ~/.inputrc. Aby uzyskać tę samą funkcjonalność, możesz dodać następujące elementy do ~/.zshrc- to ponownie użyje altklucza:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Zobacz tę dokumentację, aby uzyskać więcej informacji na temat wbudowanego edytora linii zsh (zle).


Dlaczego to? Skonfigurowałeś swój profil do korzystania z domyślnych ustawień Xterm:

wprowadź opis zdjęcia tutaj

Dlatego musisz „złapać” tę sekwencję i powiedzieć, readlineco robić.


Jeśli powyższe nadal nie działa i korzystasz z systemu OS X 10.9 (Mavericks) lub podobnego, prawdopodobnie musisz wyłączyć globalne skróty Kontroli misji, które uniemożliwiają dostęp do klawiszy Control + Strzałki, nawet jeśli sama Kontrola misji jest wyłączona. Możesz to zrobić w Preferencjach systemowych → Klawiatura → Skróty → Kontrola misji :

ustawienia klawiatury do kontroli misji

slhck
źródło
4
Staram się postępować zgodnie z instrukcją, aby klawisze alt + lewy i alt + prawy działały. Dodałem dwie linie do mojego pliku .inputrc, ale jedyną rzeczą, która dzieje się po naciśnięciu klawiszy jest to, że albo „D” albo „C” zostaną wydrukowane w powłoce. Używam iTerm2 z powłoką Zsh. Jakieś pomysły?
Flo
1
@Flo Spróbuj dodać linie bindkey -e, bindkey '^[[1;9C' forward-worda bindkey '^[[1;9D' backward-wordna Twój ~/.zshrczamiast. IIRC zsh nie czyta .inputrc- a przynajmniej działa dla mnie w ten sposób.
slhck
2
Nie działa dla mnie z ctrl-lewy / prawy + bash, ale działa dobrze, jeśli ustawię go na alt-lewy / prawy.
Dalin
3
Dodano edycję skrótów Kontroli Misji, która uniemożliwia działanie któregokolwiek z nich w najbardziej irytująco nieprzejrzysty sposób. Mam nadzieję, że uratuje to kogoś przed
zrobieniem
12
W przypadku OSX + zsh + iTerm2 + ctrl-lewy / prawy użyj następującego polecenia:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
Artur Bodera
45

Działające rozwiązanie dla Zsh. Prosty, bezpośredni, gotowy do użycia.

  1. Iść do: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Załaduj ustawienie wstępne: Natural Text Editing

Załaduj wstępne ustawienie „edycji tekstu naturalnego”

Szczęśliwy oprawca
źródło
Dzięki @Happy Torturer, uważam, że to najlepsza odpowiedź, głównie dlatego, że nie mam tego problemu na zwykłym Terminal.app, więc nie chcę modyfikować bash / zsh, po prostu chcę działać tak jak w Terminal.app.
galuszkak
To, to, to. Dziękuję bardzo za to rozwiązanie! Przeszedłem przez ten irytujący proces z każdym komputerem Mac. Teraz znam najprostszy sposób, aby to osiągnąć. Dziękuję Ci!
vernonk
8

Naprawiłem to w ten sposób:

W górnym menu; iść do

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)
rassom
źródło
wszystko, co mam w ramach tego ustawienia to „Ustawienia fabryczne”
MaylorTaylor,
7

Użyłem innego podejścia. Używając BetterTouchTool zaprogramowałem niestandardowy skrót klawiaturowy dla iTerm2. Kiedy naciskam Alt-Left w iTerm2, wysyła skrót klawiaturowy Ctrl-Left z działaniem „Wyślij skrót klawiaturowy do określonej aplikacji”. Aplikacja to iTerm2. Zrobiłem to samo dla klawiszy Alt-Right zamapowanych na Ctrl-Right.

Skutkuje to tym, że naciśnięcie klawisza Alt-Left lub Alt-Right w iTerm powoduje wysłanie klawisza Ctrl-Left lub Ctrl-Right bezpośrednio do iTerm2, z pominięciem zwykłego ogólnosystemowego skrótu, aby przenieść pulpit w lewo lub w prawo. W ten sposób uzyskuję typowe zachowanie Maca w iTerm2, na lokalnych sesjach terminalowych, ale także na zdalnych sesjach SSH i mogę użyć standardowego ctrl-lewo / ctrl-prawo, aby przejść do różnych komputerów. Napisałem to tutaj:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/

chmac
źródło
2
BetterTouchTool nie jest oprogramowaniem typu open source i równie dobrze może robić rzeczy, których nie chciałbyś. Facet mówi, że jest studentem, ale równie dobrze mógłby być trzyliterową agencją.
ewakuuj
7

W rzeczywistości znalazłem najłatwiejsze rozwiązanie, aby przejść do ustawień mojego profilu (znajdującego się w Profile / Keys), usuwając obrażające skróty profilu (ponieważ profil zastępuje globalny w iTerm), w moim przypadku alt + lewy i alt + prawy, a następnie globalny skróty działały dla mnie idealnie!

Ponadto, jeśli używasz OS X, prawdopodobnie najlepiej trzymać się skrótów systemowych, tj. Zamiast tego używać Alt + Left i Alt + Right w tym celu, ponieważ różne zachowanie w terminalu może ostatecznie spowodować ból.

Oprócz tego rozwiązanie Chmac do korzystania z Better Touch Tool było eleganckim sposobem zmiany kontroli + zachowania strzałki tylko w iterm.

nayyarv
źródło
w rzeczywistości jest to najlepsze rozwiązanie. Jest to mylące, ponieważ większość z nas przechodzi do Keyskarty. Zamiast tego musimy przejść do Profileszakładki -> Profil (np. Domyślny) -> klucze.
Paschalis,
To zdecydowanie najbezpieczniejsze i najłatwiejsze rozwiązanie.
rewakuj
2

Ten post uczy tego i innych skrótów jako ⌥ ← Usuń, aby usunąć słowo:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/

Seralto
źródło
To tak naprawdę nie odpowiada na pytanie, które dotyczy użycia <ctrl> <left>
DavidPostill
Wszystko, co musisz zrobić, to użyć skrótu, który odpowiada Twoim potrzebom. „<ctrl> <left>” lub cokolwiek chcesz.
Seralto
1
Podaj więc istotne części odpowiedzi z linku (linków), ponieważ odpowiedź może stać się nieważna, jeśli zmieni się linkowana strona (strony).
DavidPostill
1

Musisz przejść do Profileszakładki i usunąć mapowanie dla alt+ lefti alt+, rightponieważ domyślnie wyświetla niektóre wartości szesnastkowe.

Sid
źródło
Zrobiło to dla mnie!
Philip