Czy terminale wykrywają lub?

Czy terminal może wykryć ⇧ Shift+Wpisz↵ lub Ctrl+Wprowadź↵ Klawisze?

Próbuję skonfigurować Vima do mapowania kluczy, które używają tych sekwencji, i chociaż działają dobrze w gvim, nie wydają się działać w żadnej konsoli terminala.

Ciekawostką jest to, że chociaż Ctrl+Enter↵{[2] } nie jest wykrywany w Vimie, mapowanie Enter↵ na Esc mapuje poprawnie, ale potem wciskając Ctrl+Enter↵ Enter↵!

Author: Nicolas Wu, 2009-02-28

2 answers

Niektóre terminale wysyłają <NL> po naciśnięciu <C-Enter>. Jest to równoznaczne z wysłaniem <C-J>.

Aby dowiedzieć się, co twój terminal robi z <Shift-Enter>, <Ctrl-Enter> i <Enter>, przejdź do swojego terminala, wpisz <Ctrl-V> (podobnie jak sugestia sykory dla Vima) i wpisz interesującą Cię sekwencję.

Używając gnome-terminal, dostaję:

  <Enter> : ^M
<S-Enter> : ^M
<C-Enter> : <NL>

Patrząc na man ascii wskazuje, że ^M daje <CR> sekwencję.

Odpowiedź jest taka, że to zależy od terminala, a jest łatwy sposób na sprawdzenie.

 33
Author: Nicolas Wu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-28 18:09:15

Gvim uruchamia własny menedżer do obsługi naciśnięć klawiszy, dzięki czemu może odbierać wszystkie różne kombinacje klawiszy. Vim jest zależny od konkretnego terminala do przekazywania określonego naciśnięcia klawisza, więc obsługa klawiszy jest tylko tak dobra lub zróżnicowana, jak terminal.

Jednym ze sposobów, aby dowiedzieć się, czy możesz zrobić to, co chcesz zrobić, jest użycie klucza, aby dowiedzieć się, co jest wstawione. Typ eg:

:<C-V><C-Enter>

Ie rzeczywiście wpisz kombinację, którą chcesz nacisnąć po wpisaniu kombinacji Control-V. następnie zrób to samo dla enter, ie

:<C-V><Enter>

Jeśli dają ten sam kod, to terminal interpretuje obie kombinacje klawiszy jako ten sam kod klawisza i nie można ich powiązać bez mieszania się z terminalem.

W moim terminalu (urxvt), Control-Enter, Shift-Enter I Enter (same) wszystkie produkują znak ^m, co oznacza, że nie mogę mapować jednego bez mapowania drugiego. To samo dotyczy Control-Tab i Control-I oraz Control-Space i Control- @

EDIT: użyj C-Q zamiast C-V Dla Windows.

 16
Author: sykora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-28 16:15:00