Bash vs. Gnu画面:Ctrl-AをCtrl-Shift-Aに置き換えます


44

私はGNU Screenの新しいユーザーです。私は長い間Bashを使用してきましたが、GNU Screenを試してみたいと思います。

ご存じのとおり、GNU Screenはコマンド文字として「Ca」(Control-A)を使用します。問題は、BashのControl-Aが行の先頭に移動するため、これがBash(およびGNU Readline)の行編集機能に干渉することです。」

コマンド文字を「^ Q」や「 ``」(Backtick)などの別のキーシーケンス設定できることは知っていますが、まだ使用されていない別のキーシーケンスを見つけるのに問題があります(^ Qは端末で使用されます、バックティックはシェルスクリプトを記述するときに使用されます)。コマンド文字の長さは1文字または2文字のみのようです。GNU Screen制御文字を「Control-Shift-A」のようなものに設定できますか?

(私はまだ複数のハイパーリンクを使用できないため、Bashドキュメントにリンクできません)


5
screen他のシステムで使用するときに混乱しないようにするために、デフォルトのキーバインドを使用するか、少なくとも最初にそれらを学習するのが最善の方法です。 ^A aデフォルトでは、通常の^Aキーコンボを送信します。そのコンボをたくさん使うと少し不便です。HOMEこのため、通常は代わりにキーを使用します。しかし、それでも常に機能するとは限りません。
直観

ここではCtrl-spaceが好きではありません。よく働く。
ワイルドカード

回答:


18

問題はControl- Shift- Aによって送られたほとんどの端末エミュレーションプログラムは1からそれのための異なるコードを送信していないということですControl- Aので、ための方法はありません画面の違いを教えて。

stty -ixonttyで「ソフトウェアフロー制御」を無効にする場合、Cqを使用できる場合があります。通常はこれを行うので、Csを使用してコマンドラインで検索できます。

通常はバインドされていないように見えるため、C- ^を検討してください。それはあるControl- Shift- 6USキーボードレイアウトで、他のレイアウト上で入力することは困難です。

ほとんどの人は、SIGQUITを送信するためにtty制御文字C- \を決して使用しません。使用するには、withでtty機能を無効stty quit undefにし、プレフィックスキーとしてバインドします。ただし、quitキーがsttyで無効にされていないttyでC- \を押すと、screenをアクティブ化する代わりにフォアグラウンドプロセスを強制終了する可能性があるため、これは少し危険です。

少し前にtmuxに切り替えました。画面の下で開発され、画面のデフォルトに干渉しないため、デフォルトはCb です。私はCbがかなりうまく機能することを発見しました(通常、シェルコマンドラインでの単一文字の移動には矢印キーを使用しますが、単語単位で移動するにはMbとMfを使用します)。

ちなみに、tmuxの作成者はプライマリセッションでCaを使用し、(tmuxセッションであるかどうかに関係なく)常に2回Caを入力します。この習慣を採用することをいとわない場合、2番目のCaはほとんどのEmacsライクな編集コンテキストでは何もしないはずなので、まともな妥協のように思えます。2番目のCaがノーオペレーションではない画面の外でプログラム/コンテキストを頻繁に使用する場合は、動作しません。

デフォルトでは、Ca Caはscreen の他のコマンド(最後にアクティブになった画面に切り替える)にバインドされています。カルシウムCaは、実際のカルシウムを送っており、スイッチの窓oをカルシウムを持っているために、あなたに次のように置きます.screenrc

escape ^A^A
bind o other

2
これはいいように聞こえますが、GNU ScreenでCaを2回入力すると、以前に表示されていたウィンドウに切り替わることに気付きました。「Ca Ca」を他の何かにマッピングできるかもしれませんが、どうすればいいかわかりません(このために「エスケープxy」または「メタ」を指定する必要があるようです)gnu.org/software/screen/を
Stefan Lasiewski

1
@Stefan Lasiewski:おっと、Ca CaはデフォルトではCaを送信しないことを忘れていました。Ca CaにCaとCa oを前のウィンドウに切り替えさせる少しの構成については、回答の最後にある追加を参照してください。
クリスジョンセン

よく働く!Ca Caは実際のCaを下層のシェルに送信し、Ca o 'は「other」ウィンドウに切り替わります。「Ca」をBashに送信するには、「Ca」を2回押します。これは画面外では何もしないはずで、問題は発生しません。
ステファンLasiewski

41

回避策は必要ありません。
bashで画面を使用しているときに行の先頭に移動するには、次を使用します

Control- A(リリースしてから)A


一般的に、画面制御文字がbashショートカットと競合する場合、bashショートカットの最初のものControlControl- に置き換えられます。A

同様に、他の行編集ショートカットも同様です。


おかげで、これは簡単ではありませんが、今はしませんでした。実際、何も再構成する必要はありません。あなたの答えが一番好きです。
ハラルド

+1 ty-これは、圧倒的に最良のオプションです。おもしろいのは、これを試しているときに偶然Ca Caに当たって、さらに素晴らしいコンボが見つかったことです。
kfmfe04

3

ScreenにC- \を使用していますが、それを十分に推奨することはできません。偶然に他のキー定義にヒットする可能性がありますが、通常はC- \ではありません。それは私がそれについて好きなものです。


3

私はこれを使用します。screenrc

escape ^bb

例:切り離すには次のように入力します ctrl-b d


0

screen / tmuxでctrl-_(ctrl + 7と通常はctrl + /で作成することもできます)を使用します。


0

私はほとんどの場合ctrl-zを使用しますが、一部にはctrl-xも使用します。「停止」割り込みはそれほど使用しませんが、必要な場合は^ zzと入力できます。これにより、デフォルトのctrl-aを使用するリモートサーバーでセカンダリスクリーンセッションを開始することもできます。そして、3番目のセッションを(3番目のサーバーで)開始する場合、ctrl-xを使用できます。Ctrl-xはロック画面機能であり、多くの環境ではそれほど一般的ではありません(多くの場合、画面はターミナルエミュレータ内で実行されているため)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.