Экран GNU - изменение клавиши управления по умолчанию escape на ALT-X? - PullRequest
24 голосов
/ 09 октября 2009

На экране GNU я хочу изменить привязку команды по умолчанию к Alt-s (путем настройки .screenrc) вместо Ca по умолчанию, причина в том, что я использую emacs, поэтому экран GNU связывает клавишу Ca, отправляя «Ca» Emacs становится утомительным (как сказал @Nils, чтобы послать «Ca», я должен набрать «Ca a»), а также «Ca» в оболочке bash, и я могу изменить escape на C-, но некоторые из них уже сопоставлены в Emacs и других комбинациях не так просто, как в ALT-ов. Если кто-нибудь уже сделал сопоставление клавиш ALT, пожалуйста, дайте мне знать.

Ответы [ 6 ]

9 голосов
/ 09 октября 2009

Из моего чтения 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 обязательный вместо. Это было бы немного хакерски.

8 голосов
/ 31 августа 2012

Чтобы сделать Alt + X префиксом по умолчанию для команд и свободного C-a, добавьте следующие строки в .screenrc:

escape ^||
bindkey "^[x" command

как побочный эффект C- | будет префикс команды тоже. Если вам тоже нужны эти ключи, исправьте "escape ^ ||" соответственно.

8 голосов
/ 31 августа 2011

Можно обойти ограничения : escape , используя registers и : 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#howto-alt-key-as-escape

7 голосов
/ 15 октября 2009

Я также Emacs и пользователь экрана. Хотя я редко использую Emacs в терминале - и в качестве такового в сеансе экрана - я не хотел отказываться от C-a для оболочки (которая использует привязки клавиш Emacs). Моим решением было использовать C-j в качестве префиксного ключа для экрана, которым я был готов пожертвовать. В режимах программирования Emacs он привязан к (newline-and-indent), который я также привязал к RET, поэтому я действительно не пропускаю его.

Кстати: я знаю, что это совет, а не ответ, но я чувствовал, что это будет достаточно ценно, чтобы опубликовать, тем не менее.

6 голосов
/ 10 октября 2009

Экран не имеет сокращенного синтаксиса для альт-привязок, но вы можете задать ему восьмеричный код напрямую. Например, на моей машине Alt-x имеет шестнадцатеричный код F8 или восьмеричный код 370, поэтому введите

побег \ 370х

в моем screenrc изменил управляющий код на alt-X

Протестировано и работает с экраном 4.00.03 в Linux.

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

$ echo -n ^QM-x | perl -ne 'printf "%lo\n", ord($_)'

^ Q - это команда для вставки в кавычки для readline (она вставляет то, что вы вводите напрямую, не пытаясь ее интерпретировать), а M-x был буквальным Alt-X.

0 голосов
/ 01 июля 2011

Пользователь Emacs здесь.

Лучшее решение, которое я нашел, это файл ~ / .screenrc со следующим:

# C-a :source .screenrc

escape ^gg

Live обновлено здесь: https://gist.github.com/1058111

Смотри также: http://ubuntuforums.org/showthread.php?t=498675

...