GNU screen で、デフォルトの Ca の代わりに (.screenrc を微調整して) Alt-s にバインドするデフォルトのコマンドを変更したい。その理由は、emacs を使用しているため、GNU screen は Ca キーをバインドし、"Ca" を emacs に送信すると、退屈な(@Nilsが言ったように、「Ca」を送信するには「Ca a」と入力する必要があります)、およびbashシェルで「Ca」を入力し、エスケープをC-に変更できますが、それらのいくつかはすでにemacsにマップされており、他の組み合わせは ALT-s ほど簡単ではありません。ALT キー マッピングを既に行っている場合は、お知らせください。
7 に答える
レジスタと: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を参照してください
私の読書から、コマンドバインディングに使用できる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
ただし、それは少しハックです。
私はEmacsとスクリーンのユーザーでもあります。私は端末で Emacs を使うことはめったにありませんが (スクリーン セッションでも同様です)、シェル (Emacs のキー バインドを使用する) のためにも Ca をあきらめたくありませんでした。私の解決策は、Cj を screen のプレフィックス キーとして使用することでしたが、これは喜んで犠牲にしました。Emacs プログラミング モードでは、(newline-and-indent) にバインドされますが、これは RET にもバインドされているため、見逃すことはありません。
ちなみに、これは答えではなくアドバイスであることは知っていますが、それでも投稿するのに十分価値があると感じました.
Alt+をXコマンドのデフォルトのプレフィックスにして Ca を解放するには、次の行を .screenrc に追加します。
escape ^||
bindkey "^[x" command
副作用として C-| コマンドプレフィックスにもなります。このキーも解放する必要がある場合は、「エスケープ ^||」を修正してください。によると。
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コマンドであり(入力内容を解釈せずに直接挿入します)、MxはリテラルAlt-Xでした。
仲間のemacsユーザーはこちら。
私が見つけた最良の解決策は、次の ~/.screenrc ファイルです。
# C-a :source .screenrc
escape ^gg
ここでライブ更新: https://gist.github.com/1058111