Экран GNU - изменение клавиши управления по умолчанию escape на ALT-X?
На экране GNU я хочу изменить привязку команды по умолчанию к Alt-s (путем настройки.screenrc) вместо Ca по умолчанию, причина в том, что я использую emacs, поэтому экран GNU связывает клавишу Ca, отправляя "Ca" в emacs становится утомительно (как сказал @Nils, чтобы послать "Ca", я должен набрать "Ca a"), а также "Ca" в оболочке bash, и я мог бы изменить escape на C-, но некоторые из них уже отображаются в emacs и другие комбинации не так просты, как ALT-ы. Если кто-нибудь уже сделал сопоставление клавиш ALT, пожалуйста, дайте мне знать.
7 ответов
Можно обойти ограничения команды escape, используя регистры и команду :bindkey. Просто поместите это в .screenrc:
# reset escape key to the default
escape ^Aa
# auxiliary register
register S ^A
# Alt + x produces ^A and acts as an escape key
bindkey "^[x" process S
## Alt + space produces ^A and acts as an escape key
# bindkey "^[ " process S
Я также Emacs и пользователь экрана. Хотя я редко использую Emacs в терминале - и в качестве такового в сеансе экрана - я также не хотел отказываться от Ca для оболочки (которая использует привязки клавиш Emacs). Мое решение состояло в том, чтобы использовать Cj в качестве префиксного ключа для экрана, которым я был готов пожертвовать. В режимах программирования Emacs он привязан к (newline-and-indent), который я также привязал к RET, так что я действительно не пропускаю его.
Кстати: я знаю, что это совет, а не ответ, но я чувствовал, что это будет достаточно ценно, чтобы опубликовать, тем не менее.
Из моего прочтения man screen
похоже, единственный метасимвол, screen
можно использовать для привязки команды CTRL
:
escape xy
Set the command character to x and the character generating a literal
command character (by triggering the "meta" command) to y (similar to
the -e option). Each argument is either a single character, a two-character
sequence of the form "^x" (meaning "C-x"), a backslash followed by an octal
number (specifying the ASCII code of the character), or a backslash followed
by a second character, such as "\^" or "\\". The default is "^Aa".
Если есть некоторые отображения, которые вы не используете в Emacs, даже если это неудобно, например, C-|
, тогда вы можете использовать свой менеджер ввода терминала для переназначения ALT-X
к этому, позволяя вам использовать ALT
обязательный вместо. Это было бы немного хакерской, хотя.
Чтобы сделать Alt+X префиксом по умолчанию для команд и свободного Ca, добавьте следующие строки в.screenrc:
escape ^||
bindkey "^[x" command
Как побочный эффект C-| будет префикс команды тоже. Если вам тоже нужны эти ключи, исправьте "escape ^||" соответственно.
Экран не имеет сокращенного синтаксиса для альт-привязок, но вы можете указать его восьмеричным кодом напрямую. Например, на моей машине Alt-x имеет шестнадцатеричный код F8 или восьмеричный код 370, поэтому
побег \370x
в моем screenrc изменил escape-код на alt-X
Протестировано и работает с экраном 4.00.03 в Linux.
Возможно, вам придется изменить escape, так как я думаю, что это может зависеть от таких вещей, как ваш язык, кодовый набор и т. Д.: как я узнал, что должен был набрать мой escape-код
$ echo -n ^QM-x | perl -ne 'printf "%lo\n", ord($_)'
^Q - это команда quote-insert для readline (она вставляет то, что вы вводите напрямую, не пытаясь ее интерпретировать), а Mx был буквальным Alt-X.
Не отвечает на ваш вопрос, но Ca a отправляет Ca в окно, не так ли?
Товарищ Emacs пользователь здесь.
Лучшее решение, которое я нашел, это файл ~/.screenrc со следующим:
# C-a :source .screenrc
escape ^gg
Прямой эфир здесь: https://gist.github.com/1058111
Смотрите также: http://ubuntuforums.org/showthread.php?t=498675
То, что у меня было годами в моем
.screenrc
:
escape ^Zz
который теперь для меня встроен в мышечную память.
Каким-то образом мне пришлось поделиться экраном с чужой конфигурацией, и теперь я все время останавливаю процессы (bash
^Z
)... Не смешно...