web-dev-qa-db-ja.com

screenまたはtmuxでも最も競合の少ないプレフィックス/エスケープシーケンスは何ですか?

画面は Ctrl+A。一方、tmuxは、screen内で開発されたように、 Ctrl+B。ただし、両方のキーストロークはエディタ、シェルなどでも使用されます。したがって、どちらかを選択すると、tmuxまたはscreen内で使用したときにこれらのツールのユーザエクスペリエンスおよび機能が低下します。

どのプレフィックスが他のプログラムやシェルのキーバインドと最も競合しないのですか?

91
Flow

^\(a.k.a. ^|)はあなたのキーボードレイアウトの都合の良い位置にあれば最高だと思います。他のプログラムでの使用は非常にまれです。

  • プロセスへのSIGQUITの送信
  • ^Cがインターセプトされたときにforまたはwhileループをシェルで中止する
  • emacsのtoggle-input-method

私は他の用途を知りません。慣れてからtmuxscreen以外のプロセスを誤って殺さないように注意してください。それは数年に一度だけ私に起こった。

~/.tmux.conf

unbind-key C-b
set -g prefix 'C-\'
bind-key 'C-\' send-prefix

~/.screenrc

escape ^|^|
46
cjay

Tmuxでエスケープとしてバックティックを使いたい人のために、あなたは追加したいでしょう:

unbind C-b
set -g prefix `
bind-key ` send-prefix

最後のものは重要です、さもなければ他の目的のためにバックティックをタイプすることはできません:-)

47
Ned Ruggeri

Ctrl + Aは、EmacsモードでのBashなど、Emacsで問題を引き起こすことも知られています。これはあなたにとって問題ではないようです。

Ctrl + Oは私が見たもう一つのオプションです。どうやら、これはRatPoisonのデフォルトです(これはマウスを必要としないXウィンドウマネージャです)。入れ子スクリーンを使用するときはCtrl + Oを使用しました。外側のスクリーンにはCtrl + O、内側のスクリーンにはCtrl + Aです。うまくいったが、私の同僚をちょっと怖がった。 :-)

私はただ考えていました、そしてEmacsの代わりにviを使うなら、いくつかの選択肢があります。例えばCtrl + Gはあまり使われていません。

20
staticsan

私はCAPS-LOCKをグローバルにESCにマッピングしました。それから、私は接頭辞にM-Space(つまりCAPS-LOCK + Space)を使います。

13
Nathan Speed

私はスクリーンに複雑なシステムを使用しています。私のデフォルトのエスケープはバッククォートである\ 140\140に設定されています。 Ctrl-AはZsh内ではEmacsとコマンドライン編集の両方を複雑にしています。また、Ctrl-O(ほとんどの画面操作では両手操作)が嫌いです。

1から始まる新しいセッションがキーボードの左から右に作成されるように、 's'をscreen 1に再バインドします。これにより、永続ウィンドウまたは参照ウィンドウを考慮する画面0を予約できます。ウィンドウを切り替えるには、片手で(backtick)1、(backtick)2、(backtick)3のジェスチャをするのがとても簡単です。

UNIX環境でバックティックを使用する際の問題は、Shell/Perlスクリプトコードをカットアンドペーストしようとしたときです。このため、私はエスケープ文字を切り替えるためにF11/F12キーをバインドしています。

bindkey -d -k F1        escape ^O^O # bound to F11
bindkey -d -k F2        escape \140\140 # bound to F12

切り取りと貼り付けの操作をしているときは、Ctrl-Oにエスケープが切り替わります。私はダブルダニを打つのは簡単で、ほとんどのスクリーン操作との良いトレードオフであることに気づきました。

F12を押してモードを示すためにキャプションを使用することによってモードを切り替えることを可能にする、より新しい解決策でこの答えを再考してください。

## command characters
escape \140\140                 # default is `

## sets caption and escape toggle
bindkey -d -k F2 process a     # bound to F12

## initial caption
caption always '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{-b .c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '

## registers to toggle bindkeys
register a "\140:eval 'bindkey -d -k F2 process b' 'process c' 'escape \\017\\017'^M"
register b "\017:eval 'bindkey -d -k F2 process a' 'process d' 'escape \\140\\140'^M"

## registers to change captions
register c "\140:caption string '%{= kW}%?%F%{+b mW}%:%{= kK}%? %= %?%F%{.c}ALT%{-}%? | %-w%{KW}%n* %t%? @%u%?%{-}%+w '^M"
register d "\017:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '^M"
12
Darren Hall

私はtmuxCtrl-Qを使っていますが、これまでのところうまくいきました。しかし、それはシェルのフロー制御と矛盾することに注意しなければなりません。デフォルトでは、Ctrl-Qは、出力をCtrl-Sで停止した後に再び有効にするために使用されます。誤ってCtrl-Sを押した後に何度か動かなくなったシェルに驚いたので、私はCtrl-Sを押さないようにしました。

stty -ixonと一緒にフロー制御をオフにすることも、stty startstty stopに異なるキーをバインドすることもできます。)

# tmux.conf
unbind C-b
set -g prefix C-q
11
simonair

私はそれがタイプするのが最も簡単な接頭辞であると思うので非常に特別な/一般的な操作のために^Spaceを予約するのが好きです、しかし今私はそれをtmuxprefixとして写像しています。

それはあなたの指が即座にあなたがタイプしたいコマンドにジャンプするのを自由にします。 試してみてください。

6
terrace

遅れる提案:ctrl-sctrl-sにはいくつかの利点があります。

  1. ホームローに。
  2. まだctrl-aに近い(実際、ほとんどのタイパーにとっては、ctrl-aに使用したのと同じ2本の指を使用する)ので、ctrl-aからctrl-sへのマッスルメモリの切り替えは簡単です - 最初の1時間以内に2番目の性質になりましたやってみる.
  3. Emacsスタイルの "行の先頭に戻る"またはvimスタイルの "番号を増やす"操作のためにctrl-aを解放します。あるいは、組み込み画面インスタンスを制御するために接頭部文字をエスケープする必要はなく、tmuxペイン内でscreenを実行するためのものです。 (私はscreenを実行しているリモートサーバへのsshセッションを含むペインを持つローカルtmuxを使用してこれを頻繁に行います)
  4. 他の一般的に使用される端末機能をオーバーライドしたり、エスケープ要件を追加したりしません。 何もしない今日使用している大多数の人々はctrl-sにいます!

もちろん、ctrl-sに何もしていないのは、端末では伝統的にフロー制御に使われていて、morelessのようなページングツールが一般的になった時代にさかのぼるからです。どこかのGUI端末プログラムでは、まだデフォルトでそのフロー制御機能が有効になっていると確信していますが、実際には1つにまとめられていません。私が試したすべてのgui端末プログラムは、デフォルトでは完全に無視されているように見えます。これにより、便利なキーの組み合わせがより生産的な用途に利用できるようになります。

ですから、(例えば)生のLinux端末の中からscreen/tmuxを実際に使っているのではなく、むしろGUIベースの端末から使っているのであれば、ctrl-sを試してみることをお勧めします。それは私にとってtmuxとscreenの中で圧縮されてずっと便利になりました。

6
Trevor Powell

私は `(バックティック)が使われているのを聞いたことがありますが、実際のバックティックには2回入力するだけです。そのアクションに慣れているviユーザーにとっては良いかもしれません(あなたがCaps lockのことをしない限り)。

4
bluehavana

私はC-jをお勧めします。これはviやemacsにそれほど干渉しません。本質的に、私はSusam Palによるコメントに同意します。それは答えとして現れる価値があるように思われます、他のすべてが私の観点から重大な対立を持っているように思われるので。

C-jはjやVimと同義であり、C-jを使ってVimの1行下に移動する人は誰もいないので、私は自分のプレフィックスキーとしてC-jを使います。私の〜/ .tmux.confにこれがあります。

set -g prefix2 C-j; bind-key C-j send-prefix -2

4
nealmcb

矛盾のない鍵は C-zこれは通常、プログラムを起動したシェル上で別のものを続行するためにプログラムをバックグラウンドに送信するために使用されるためです。私はtmuxがあるとき私はこれをしません。

4

Programmer Dvorakキーボード配列の場合、接頭辞としてマイナス(ダッシュ)キー、すなわちctrl + -を使用するのはかなり上手です。
マイナスキーは、qwertyレイアウトの一重引用符の位置にあります。また私はCtrlキーとしてロックキー機能をキャップします。以下はプレフィックスとして設定するためのtmuxの設定です。

unbind C-b
set -g prefix C-_
bind C-_ send-prefix
bind - last-window

あなたは不思議に思うかもしれません、なぜアンダースコアがマイナスの代わりに使われるのですか? Tmuxを参照してください:どうすればCにバインドできますか?( - コントロールマイナス)?
qwertyの場合、 同じショートカットを保持するために、tmuxプレフィックスキーをC - 'にバインドするにはどうすればよいですか?

あなたがVim/Neovimを使うならば、これは完璧な接頭辞であると私は言うでしょう。 ctrl + actrl + bのような接頭辞は、どちらの方法でもVimの機能をシャドウ(オーバーラップ)させるためです。

3
Vladimir Bauer

最善の解決策は^ Cだと思います。 Emacsはプレフィックスキーとして^ Cを使っています、そしてシェルで^ Cをタイプする必要があるときはとにかく私はとにかく2つをタイプします。 :-)

unbind-key C-b
set -g prefix C-c
bind-key C-c send-prefix
2
user114905

個人的には、私にとってbCtrlから離れすぎています。私がtmuxを使うとき、私は常にバインディングをC-bからC-aに変更します。 C-aとの主な矛盾はすべて選択ですが、これが私がtmuxを使用しているプログラムの問題であるとは私は思っていません。

2
DaveParillo

GNU emacs、zsh、およびMS Windowsユーザーとして、私はControl-Tを使います。 (例.screenrc :)

エスケープ "^ T ^ T"

はいControl-Tには、UbuntuのaptitudeのプルダウンメニューやEmacsの転置文字のようなものがあります。

それは私のために両手が必要なので、私はC-oを無視しました。

2
piyo

私はCaps Lockを使っています、そしてOSXではそれを機能させるためにあなたは特別なことをする必要があります。

https://Gist.github.com/burtlo/3788048

2
Brad Parks

あなたはバックティックを使うことができます。 tmuxの古いバージョンの中にはバックティックをサポートしていないので、次のようにして回避策をとることができます(ただし、C-`、C- @、およびC-spaceを同時にメタとして追加します)

# meta prefix - @ - backtick
unbind C-b
set -g prefix C-@
bind C-@ send-prefix
bind C-@ last-window

私は通常CapsLockをCtrlにリマップしているので、バックティックを使うともっと理にかなっています。

1
Alex

バックティックをエスケープにマッピングするGNU画面の場合、〜/ .screenrcの次のコードが機能します。

escape ``
1
user1056720

ここでのほとんどの答えは、キーの組み合わせの一部としてCtrlを使用しています。
Ctrlキーを押すと、小指がいつもCtrlキーを押し下げるようにしなければならなかったので、私の小指が痛くなり始めました。
私は私の左手の親指と右手の人差し指でタイプしたAlt-jを使います、そしてそれは非常に便利です。私はこれまでに他のプログラムとの衝突も発見していません。

unbind C-b
set-option -g prefix M-j
1
wullxz

私は バインディングctrl- \を接頭辞 として使うのが好きですが、これをLinux Mint 12で動作させるには、バインディングの一番下の部分をエスケープする必要がありました。そうでなければ、それはかかりません。ここで私の.tmux.confを見てください: emacsとvimの両方でtmuxを使う

0
justingordon

私は、Macユーザーはバックティックよりも§の方が便利だと思うと思います。

Mac以外のキーボードでは、バックティックはMacキーボードの§とほぼ同じキーに配置されます。そのため、バックティックの使用を提案している人と同じ便利さを体験するには、Macキーボードの段落記号を使用します。

Macのキーボードでバックティックを使用するのは、(⇧)shift、(⌃)control、(⌥)alt-keysのすぐ近くにあるので、ややこしいです。 MacBookでは、左のfn-キーの近くでも。

0
nanitous