Могут ли терминалы обнаруживать <Shift-Enter> или <Control-Enter>? - PullRequest
32 голосов
/ 28 февраля 2009

Возможно ли для терминала обнаружить ⇧ Shift + Enter↵ или Ctrl + Enter↵ нажатий клавиш?

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

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

Ответы [ 2 ]

35 голосов
/ 28 февраля 2009

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

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

Используя gnome-терминал, я получаю следующее:

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

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

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

17 голосов
/ 28 февраля 2009

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 - @

РЕДАКТИРОВАТЬ: используйте C-Q вместо C-V для Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...