Экран 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

См. http://adb.cba.pl/gnu-screen-tips-page-my.html

Я также 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)... Не смешно...

Другие вопросы по тегам