Подтвердить что ты не робот

Могут ли терминалы обнаруживать <Shift-Enter> или <Control-Enter>?

Возможно ли, чтобы терминал обнаружил клавиши ⇧ Shift + Enter↵ или Ctrl + Enter↵?

Я пытаюсь настроить vim для выполнения сопоставлений клавиш, которые используют эти последовательности, и, хотя они отлично работают в gvim, они, похоже, не работают на какой-либо терминальной консоли.

Любопытно, что хотя Ctrl + Enter↵ не обнаружен в vim, отображение карт Enter↵ в Esc отображается правильно, но затем нажатие Ctrl + Enter↵ ведет себя как Enter↵!

4b9b3361

Ответ 1

Некоторые терминалы отправляют <NL> при нажатии <C-Enter>. Это эквивалентно отправке <C-J>.

Чтобы узнать, что делает ваш терминал с помощью <Shift-Enter>, <Ctrl-Enter> и <Enter>, перейдите к своему терминалу, введите <Ctrl-V> (аналогично предложению sykora для vim) и введите интересующую вас последовательность в.

Используя gnome-terminal, я получаю следующее:

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

Глядя на man ascii, указывает, что ^M дает последовательность <CR>.

Ответ заключается в том, что он зависит от терминала, и там есть простой способ проверить.

Ответ 2

Gvim запускает собственный менеджер для обработки нажатия клавиш и поэтому может выбирать все различные комбинации клавиш. Vim зависит от конкретного терминала для передачи конкретного нажатия клавиши, поэтому обработка ключа только такая же хорошая или разнообразная, как и терминал.

Один из способов узнать, можете ли вы делать то, что вы хотите сделать, - это использовать ключ, чтобы узнать, что вставлено. например, Тип:

:<C-V><C-Enter>

т.е. на самом деле введите комбинацию, которую вы хотите нажать, набрав комбинацию Control-V. После этого сделайте то же самое для ввода, т.е.

:<C-V><Enter>

Если они выдают один и тот же код, терминал интерпретирует обе комбинации клавиш как один и тот же код ключа, и вы не можете связывать их, не входя в терминал.

В моем терминале (urxvt), Control-Enter, Shift-Enter и Enter (по себе) все производят символ ^ M, то есть я не могу сопоставить его без отображения другого. То же самое касается Control-Tab и Control-I, а Control-Space и Control - @

EDIT: используйте C-Q вместо C-V для Windows.