Jaka jest sekwencja ucieczki ANSI na terminalu gnome dla „CTRL + strzałka / s”?

10

Próbuję skonfigurować mojego bash ~/.inputrcdo tych ustawień
(Uwaga: , znaczy klawiszy strzałek w lewo iw prawo)

  • Ctrl+ - powinien przeskoczyć o słowo wstecz
  • Ctrl+ - powinien przeskoczyć o słowo do przodu

Obecnie mam to w sobie ~/.inputrci to nie działa. Ctrl + arrownie produkuje nic.

"\eC-5C":forward-word
"\eC-5D":backward-word

Jestem pewien, że moja sekwencja ucieczki jest nieprawidłowa.
Jakie są prawidłowe sekwencje specjalne dla Ctrl + arrowkombinacji?

  • terminal: tmux wewnątrz gnome-terminal
the_velour_fog
źródło

Odpowiedzi:

14

Gnome-terminal (bardziej poprawnie VTE ) imituje niektóre wersje sekwencji ucieczki xterm. Jak ściśle to robi, zależy od wersji VTE.

Odpowiednia dokumentacja xterm znajduje się w sekcji Klawisze funkcyjne typu PC w sekwencjach kontrolnych XTerm .

To, czego szukasz, to ciąg znaków \e[1;5D(kontrolna strzałka w lewo), gdzie 5oznacza controlmodyfikator.

W ncurses, można zobaczyć te ciągi przy użyciu infocmp -x, jako wartości dla kUP5, kDN5, kLFT5i kRIT5. Na przykład:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,
Thomas Dickey
źródło
dzięki za odpowiedź i link do zasobów. To rozwiązało problem dla mnie!
the_velour_fog
16

Najprostszym sposobem na znalezienie kodów kodów sekwencji jest użycie ctrl- v.

Więc wpisz ctrl Vi ctrl uzyskać:

^[[1;5C

Który jest sposobem na pisanie ESC[1;5Club \e[1;5C.


źródło
Wow świetnie. czy wiesz, że jest to zamierzona cecha terminala gnome, czy też jest to coś, co zostało odkryte przypadkowo?
the_velour_fog
Zarówno zsh ( bindkey|grep 'quoted-insert'), jak i bash ( bind -p|grep 'quoted-insert') są powiązane kluczem, aby wyprowadzić ustawione kody kluczy <c-v>.
kba stoi z Moniką
1
Za to, co jest warte, Ctrl-V wykonuje tę samą funkcję w trybach Wstaw i Poleceń Vima.
joeytwiddle
4
@ the_velour_fog Ctrl + V, co oznacza, że ​​„wstaw następny znak zamiast interpretować go jako komendę terminalową” pochodzi z początków Uniksa. Jest to funkcja przetwarzania wiersza poleceń jądra, naśladowana przez bardziej wyrafinowane systemy wejściowe, takie jak bash, zsh, vi, ...
Gilles 'SO- przestań być zły'
1
@kba Dla przypomnienia, nie są jedynymi. Bash jest faktycznie dostarczany przez bibliotekę GNU Readline, od której jest zależny, co również wiąże go, <c-q>aby dopasować skrót Emacsa, który kopiuje. Zsh również wiąże go z oboma <c-v>i <c-q>tylko, jeśli włączysz tryb Vima, dość ironicznie. Readline jest także używany przez inne rzeczy, takie jak import rlcompleterulepszenie Pythona . (Źródła: tiswww.case.edu/php/chet/readline/readline.html#SEC9 i man zshzle)
ssokolow