Как назначить сочетание клавиш терминала с CTRL-M на другую комбинацию

Как назначить сочетание клавиш терминала с CTRL-M на другую комбинацию

Я прочитал в другом посте, что можно ввести CtrlJили CtrlMвместо Returnклавиши в терминале, что здорово. Но я хочу иметь возможность изменить это на другую комбинацию, например: Ctrlspacebar. Я пробовал переназначить F1клавишу, но безрезультатно.

Это возможно?

решение1

Зависит от того, что именно вы хотите сделать.

Терминалы имеют два основных режима, оба из которых можно настроить с помощью дополнительных параметров:

  1. Режим cooking/canonical. В этом режиме терминал поставляется с внутренним редактором строк, где символы ^H(или ^?), ^W, ^U(или @), ^V(или \) могут использоваться для редактирования строки. Ничего не отправляется в приложение, считывающее с терминального устройства, пока символ ^Jне будет получен.
  2. сыройрежим. Где каждый символ доступен для чтения приложению, считывающему терминальное устройство, сразу после его ввода, или после задержки, или после того, как было введено определенное количество символов в зависимости отвремяиминпараметры, но в любом случае не с помощью этого внутреннего редактора строк.

В обоих случаях ^Mсимвол (CR) может быть автоматически преобразован в ^J(LF) (или проигнорирован для тех терминалов, которые отправляют и CR, и LF при нажатии Enter).

Первый режим — это режим терминала по умолчанию. Второй режим используется приложениями вроде zsh, bashили vi, которые хотят взять под контроль редактирование строк.

В первом режиме нельзя изменить символ, используемый для принятия строки.

Но вы можете сказать своему терминалу, чтобы он отправлял ^Jсимвол при нажатии той или иной клавиши. Например, с помощью xtermвы можете использовать translationsресурс X11, чтобы изменить сопоставление клавиш и сказать ему отправлять все, что вы хотите, при нажатии данной клавиши. Если ваш терминал не поддерживает переназначение клавиатуры, вы все равно можете использовать GNU, screenчтобы он сделал перевод за вас. Например, если ваш терминал отправляет ^[OPпоследовательность символов при нажатии F1, вы можете добавить

bindkey \033OP "\012"

чтобы вы ~/screenrcсказали ему отправлять LF, когда вы нажимаетеF1

Во втором случае, когда приложения берут под контроль ввод, вы по-прежнему можете использовать тот же подход, что и выше, но вы также можете настроить каждое отдельное приложение так, чтобы оно делало то или это при нажатииF1

Например, с помощью zsh, символ LF привязан к accept-line zshвиджету. Вы можете сделать:

bindkey "^[OA" accept-line

иметь F1привязку к этому же виджету.

Обратите внимание, что Ctrl+Spaceобычно отправляется символ NUL, который можно обозначить как \0или ^@.

Связанный контент