2009-10-09 14 views
20

GNU画面では、デフォルトのCaの代わりにAlt-s(.screenrcを調整することによって)へのデフォルトのコマンドバインディングを変更したいので、私はemacsを使用しているためGNUスクリーンはCaキーをバインドし、 "Ca" Emacsは退屈になります(@ Niilsが "Ca"を送るために "Ca a"とタイプする必要があります)、そして "Ca"をbashシェルに入れて、エスケープをCに変えることができました。 emacsなどの組み合わせは、ALT-sほど簡単ではありません。既に誰かがALTキーマッピングを行っている場合は、私に知らせてください。gnu screen - デフォルトのエスケープコマンドキーをALT-Xに変更しますか?

答えて

1

あなたの質問には答えませんが、C-aはC-aをウィンドウに送りますか?

+1

これは、emacsユーザーにとってはあまり便利ではありません。 – rampion

+0

C-aそれを行います。しかし問題は、画面上で実行されているemacsでC-aバインディングを使用できないことです。あなたはそれを持っているといいですか? – Siva

+1

@rampion:それは分かっていますが、私は間違っていると信じています。 @Siva:Hm。まったく、いいえ。 "C-a a"を押すと、C-aがemacsに送信されます。それは不便な、はい - しかし可能です。 – Nils

9

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を再マッピングして、​​バインディングを使用させることができます。しかしそれはちょっとハッキリです。

+0

ありがとう。それはちょっと難しいですが、おそらくこれを行う直接的な方法があるかもしれません。 – Siva

+3

コントロールでエスケープキーを始める必要はありません。私は "エスケープ'〜 "を使用して、それをバックティックにします(コントロールなし)。私はあなたがAlt何かを使うことはできないと思います。 @silentbicyleありがとう。 – silentbicycle

+0

ええ、私はコントロールの前置きをしてはいけないことを知っている、 "エスケープ'〜 "私のために動作しません。私がCTL/ALTマッピングを好む理由は、シェル上で実行されているプログラムの中で実際に〜しなければならないときには面倒になります。 – Siva

6

スクリーンにはaltバインディングの短縮形構文はありませんが、それに直接8進コードを付けることができます。私のマシン上のインスタンスの場合は、Altキーを押しながらxはので、私のscreenrcで

はALT-Xする

テストおよび作品をエスケープコードを変更し

エスケープ370x \置く進コードF8、または370進を、持っていますLinuxのスクリーン4.00.03で。

私は、これはあなたの言語およびコードセットのようなもの、などに依存してもよいと思いますので、あなたは、エスケープを変更する必要があります:私は私のエスケープコードが

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

^Qがあると入力することでした。何が分かりましたかreadlineのquoted-insertコマンド(それを解釈しようとせずに直接入力したものを挿入します)、MxはリテラルのAlt-Xでした。

+0

私はこのトリックを試してみましたが、それは私のためには機能しません。これをデバッグする方法はありますか? – Siva

+0

こんにちはSiva - 私は、最も可能性の高い違いは、メタキーのターミナルエンコーディングのためだと思います。私はxterm termcap/terminfoの設定でxtermを使っています。 ktermやgnome-terminalのような他の端末や、異なるTERM設定では異なるエンコーディングを使用する可能性があります。私のエコートリックはあなたのマシンで何を作り出しますか? –

5

私はEmacsとスクリーンのユーザーです。私は端末でEmacsを使用することはめったにありませんが、スクリーンセッションではEmacsのキーバインディングを使用するシェルのためにC-aをあきらめたくありませんでした。私の解決策は、私が犠牲を払うことを望んでいたscreenのプレフィックスキーとしてC-jを使うことでした。 Emacsのプログラミングモードでは、RETにバインドされた(改行とインデント)行にバインドされているので、実際にはそれを見逃すことはありません。

ところで、私はこれが答えではなく助言だと知っていますが、それでも投稿する価値はあると感じました。

0

ここにemacsの仲間がいます。

私が見つけた最良の解決策は〜/です。以下でのscreenrcファイル:

# C-a :source .screenrc 

escape ^gg 
ここで更新ライブ

https://gist.github.com/1058111

も参照してください:http://ubuntuforums.org/showthread.php?t=498675

+0

btw、^ Gはemacsの "cancel"シーケンスなので、これは本当にうまく動作します。だからあなたの筋肉の記憶が「痙攣」であれば、あなたはイマックで何かを混乱させることはありません。 – audiodude

+3

私はこれのファンではありません。 C-gは私がEmacsで諦めたい最後の鍵の一つです。 – Psyllo

+0

バッククォートを使用するには "escape^\' [""]に変更してください。 C- \ 'はデフォルトでEmacsのものに束縛されていません。 – Psyllo

7

を回避することが可能である:レジスタを使用してコマンドの制限を逃れる:はbindkeyコマンド

# 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 

.screenrcのために以下の行を追加し、XAltキー + にコマンドや遊離Caのデフォルトの接頭辞を作るためにhttp://adb.cba.pl/gnu-screen-tips-page-my.html#howto-alt-key-as-escape

6

を参照してください:

だけ .screenrcのでこれを置きます
escape ^|| 
bindkey "^[x" command 

副作用としてC- |コマンドプレフィックスにもなります。このキーが空でなければならない場合は、 "escape^||"を修正してください。それに応じて。

+0

'^ [x'は' Alt-x'にどのように転送されますか? '^'は 'Ctrl'を意味します(わかりません)。 '['は 'Alt'を意味しますか?ありがとう。 – Chad

関連する問題