Ctrl + problem ze strzałkami w lewo / w prawo


25

Po ostatniej aktualizacji systemu polecenie ctrl + strzałka w lewo / w prawo na terminalu zsh nic nie robi. Również ctrl + u ma coś nie tak, ponieważ zwykle to polecenie usuwa z kursora do początku linii, a teraz usuwa całą linię. Ktoś wie, jak rozwiązać te problemy? Dziękuję wam wszystkim.


Czy znalazłeś akceptowalną odpowiedź? Myślę, że odpowiedź Goncalo jest świetna.
Léo Léopold Hertz -

Odpowiedzi:


44

FWIW, to działało w moim środowisku (rhel5.x) przy użyciu domyślnego zsh.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[Di ^[^[[Codpowiednio dla OSX
Jon z

1
Potwierdzono, że propozycja Goncalo działa również w Debianie 8.5. Zastanawiam się tylko, dlaczego ten kod nie jest .zshrcdomyślnie wbudowany .
Léo Léopold Hertz -

Działa jak urok w Ubuntu Artful, dzięki!
Konrad Garus

Na wypadek, gdyby ktoś chciał użyć $terminfozamiast sekwencji ucieczki: klucze $terminfo[kLFT5]i $terminfo[kRIT5]działały dla mnie
Griddo

14

Ctrl + U najprawdopodobniej ma kursor na końcu linii. Po drugie, którą wersję Gentoo nazywasz „ostatnią aktualizacją systemu”?

A co chciałbyś zrobić ctrl + lewo / prawo?

  • Dodaj do konfiguracji zsh:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • I ze starego złomu znalazłem (może pomóc):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • lub spójrz na ten link, który powinien ci pomóc?

Uwaga: Jeśli konfiguracja działa, ale domniemane klucze nie robią tego, co chcesz, być może dlatego, że definicja klucza różni się od twojej i mojej, zrób: cat > /dev/null i naciśnij klawisze, które chcesz otrzymać i odpowiednio dostosuj.


1
„Ctrl + U jest najprawdopodobniej dlatego, że masz kursor na końcu linii” oczywiście mam na myśli, gdy mój kursor znajduje się na środku. „A co byś chciał, aby zrobić Ctrl + lewo / prawo?” zwykle ctrl + strzałka w lewo: pomiń słowo idąc w lewo itp.
riskio

A jakiej powłoki / terminala używasz? Czy jesteś pewien, że używasz Emacsa lub innego terminalu, którego zwykle używasz i / bin / bash? biegasz przez ekran?
Torxed,

1
proszę przeczytać pytanie jest tam ..
riskio

1
@Masi Nie jestem pewien, odpowiedziałem dwa lata przed nim, a nasze odpowiedzi są prawie identyczne, pokazałem tylko dwa różne sposoby, aby to zrobić .. i możesz połączyć je oba, aby połączyć to, co napisał.
Torxed,

1
@Masi Wiem tylko, że wtedy (pamiętajcie, 2010-2012 .. To było dawno temu) te dwa (i ich kombinacja) działały dla mnie na wielu różnych systemach. Byłem zarówno na Uniksie, jak i Linuksie (a on był na Gentoo, systemie operacyjnym w wersji kroczącej). I jest wiele śladów tego na wielu przykładach .. Takich jak to repozytorium. Teraz znowu nie jestem pewien, dlaczego, ale działało to na co najmniej dwóch komputerach, więc pomyślałem, że się tym podzielę. I na pewno jego DZISIAJ jest wyraźniejszy i nie mam nic przeciwko temu, żeby zdobył wszystkie głosy. To jest starszy post.
Torxed,

5

To, co działa , nie zależy bezpośrednio od dystrybucji (Gentoo, Debian, RHEL itp.) Ani powłoki (ZSH, KSH, BASH) - zależy od tego, które terminal emulatorjest używane i jego ustawień: konsola, terminator, urxvt, lx-terminal itd. Dystrybucja może mieć znaczenie, jeśli używa innej standardowej konfiguracji powłoki (fx. .zshrc) i jeśli używasz innej powłoki, która konfiguruje powłoki dla tej dystrybucji może już ją obsłużyć.

Oto kilka rozwiązań specyficznych dla emulatora terminala:

urxvt / rxvt-unicode (i może inne):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminator, konsole i xterm (i może inne):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Aby uzyskać bardziej ogólne podejście, uruchom terminal, naciśnij kombinację klawiszy CTRL-V, a następnie kombinację klawiszy, której chcesz kod ucieczki (nazwę) - w tym przypadku kombinacje klawiszy CTRL-lewy i CTRL-prawy - i wstaw dane wyjściowe dla każdego kombinacja klawiszy pomiędzy dwoma cytatami.


1
Czy wypróbowałeś sugestię CTRL-V? Może twój terminal interpretuje naciśnięcia klawiszy inaczej, więc klucz musi być przypisany do różnych „symboli”?
miyalys,

1
Zaktualizowałem swoją odpowiedź. Istnieje wiele rozwiązań w zależności od terminal emulatorzastosowanego. Distro lub shell nie ma znaczenia. Prawdopodobnie dlatego też nie ma go w .zshrc, ponieważ to, co działa dla jednego emulatora terminala, nie działa dla innego. Ale prawdopodobnie można to rozwiązać, jeśli zshrc fx. przeczytaj zmienną środowiskową $ TERM i zastosowałem różne ustawienia klucza bindowania w zależności od wyniku.
miyalys,

2

Rozwiązany.

Używany terminal: Konsole .

Aby rozwiązać: kliknij prawym przyciskiem myszy terminal (lub ustawienia w pasku menu) -> zmień aktualny profil -> mapowanie klawiatury -> zmień na Domyślny (xfree4)


nawet nie bardzo związany z zsh, ale na pewno poprawka jest poprawką.
Torxed,
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.