GNU画面で、デフォルトのCaではなくAlt-sにバインドするデフォルトのコマンドを変更したい(.screenrcを微調整する)理由は、emacsを使用しているためGNU screenはCaキーをバインドし、emacsに「Ca」を送信するのは面倒になります(@Nilsが言ったように、「Ca」を送信するには「Ca a」と入力する必要があります)、bashShellの「Ca」とエスケープをC-に変更することもできますが、それらのいくつかはすでにemacsにマッピングされており、他の組み合わせはALT-sほど簡単ではありません。誰かがすでにALTキーマッピングを行っている場合は、私に知らせてください。
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".
C-|
のように不便であっても、emacsで使用しないマッピングがある場合は、ターミナル入力マネージャーを使用してALT-X
をそれに再マッピングし、ALT
バインディングを使用できるようにします。代わりに。しかし、それは少しハックだろう。
registersおよび:bindkeyを使用して、:escapeコマンドの制限を回避することができます。 )コマンド。これを。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 を参照してください。
作る Alt+X コマンドのデフォルトプレフィックスと無料のC-aを使用して、.screenrcに次の行を追加します。
escape ^||
bindkey "^[x" command
副作用としてC- |コマンドプレフィックスにもなります。このキーも無料にする必要がある場合は、「escape ^ ||」を修正してください。それに応じて。
私はEmacsとscreenのユーザーでもあります。ターミナルでEmacsを使用することはめったにありませんが、スクリーンセッションでは、シェルのC-aもあきらめたくありませんでした(Emacsキーバインディングを使用)。私の解決策は、画面のプレフィックスキーとしてC-jを使用することでしたが、これは犠牲にしてもかまいませんでした。 Emacsプログラミングモードでは、RETにもバインドされている(改行とインデント)にバインドされているので、見逃すことはありません。
ちなみに、これは答えではなくアドバイスだと思いますが、それでも投稿するには十分価値があると感じました。
Screenには、altバインディングの簡略構文はありませんが、8進コードを直接指定できます。たとえば私のマシンでは、Alt-xの16進コードはF8、つまり370 8進数なので、
エスケープ\ 370x
screenrcでエスケープコードをalt-Xに変更しました
Linuxでテストされ、画面4.00.03で動作します。
言語やコードセットなどに依存すると思うので、エスケープを変更する必要があるかもしれません。エスケープコードが何であるかをどのように見つけたかは、入力することでした。
$ echo -n ^QM-x | Perl -ne 'printf "%lo\n", ord($_)'
^ Qはreadlineのquoted-insertコマンドであり(入力内容を解釈せずに直接挿入します)、M-xはリテラルAlt-Xでした。
仲間のemacsユーザーはこちら。
私が見つけた最善の解決策は、次のような〜/ .screenrcファイルです。
# C-a :source .screenrc
escape ^gg
ここでライブ更新: https://Gist.github.com/1058111