画面は Ctrl+A。一方、tmuxは、screen内で開発されたように、 Ctrl+B。ただし、両方のキーストロークはエディタ、シェルなどでも使用されます。したがって、どちらかを選択すると、tmuxまたはscreen内で使用したときにこれらのツールのユーザエクスペリエンスおよび機能が低下します。
どのプレフィックスが他のプログラムやシェルのキーバインドと最も競合しないのですか?
^\
(a.k.a. ^|
)はあなたのキーボードレイアウトの都合の良い位置にあれば最高だと思います。他のプログラムでの使用は非常にまれです。
SIGQUIT
の送信^C
がインターセプトされたときにforまたはwhileループをシェルで中止するtoggle-input-method
私は他の用途を知りません。慣れてからtmux
やscreen
以外のプロセスを誤って殺さないように注意してください。それは数年に一度だけ私に起こった。
~/.tmux.conf
unbind-key C-b
set -g prefix 'C-\'
bind-key 'C-\' send-prefix
~/.screenrc
escape ^|^|
Tmuxでエスケープとしてバックティックを使いたい人のために、あなたは追加したいでしょう:
unbind C-b
set -g prefix `
bind-key ` send-prefix
最後のものは重要です、さもなければ他の目的のためにバックティックをタイプすることはできません:-)
Ctrl + Aは、EmacsモードでのBashなど、Emacsで問題を引き起こすことも知られています。これはあなたにとって問題ではないようです。
Ctrl + Oは私が見たもう一つのオプションです。どうやら、これはRatPoisonのデフォルトです(これはマウスを必要としないXウィンドウマネージャです)。入れ子スクリーンを使用するときはCtrl + Oを使用しました。外側のスクリーンにはCtrl + O、内側のスクリーンにはCtrl + Aです。うまくいったが、私の同僚をちょっと怖がった。 :-)
私はただ考えていました、そしてEmacsの代わりにviを使うなら、いくつかの選択肢があります。例えばCtrl + Gはあまり使われていません。
私はCAPS-LOCK
をグローバルにESC
にマッピングしました。それから、私は接頭辞にM-Space
(つまりCAPS-LOCK
+ Space
)を使います。
私はスクリーンに複雑なシステムを使用しています。私のデフォルトのエスケープはバッククォートである\ 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"
私はtmux
でCtrl-Q
を使っていますが、これまでのところうまくいきました。しかし、それはシェルのフロー制御と矛盾することに注意しなければなりません。デフォルトでは、Ctrl-Q
は、出力をCtrl-S
で停止した後に再び有効にするために使用されます。誤ってCtrl-S
を押した後に何度か動かなくなったシェルに驚いたので、私はCtrl-S
を押さないようにしました。
(stty -ixon
と一緒にフロー制御をオフにすることも、stty start
とstty stop
に異なるキーをバインドすることもできます。)
# tmux.conf
unbind C-b
set -g prefix C-q
私はそれがタイプするのが最も簡単な接頭辞であると思うので非常に特別な/一般的な操作のために^Space
を予約するのが好きです、しかし今私はそれをtmuxのprefix
として写像しています。
それはあなたの指が即座にあなたがタイプしたいコマンドにジャンプするのを自由にします。 試してみてください。
遅れる提案:ctrl-s
。 ctrl-s
にはいくつかの利点があります。
ctrl-a
に近い(実際、ほとんどのタイパーにとっては、ctrl-a
に使用したのと同じ2本の指を使用する)ので、ctrl-a
からctrl-s
へのマッスルメモリの切り替えは簡単です - 最初の1時間以内に2番目の性質になりましたやってみる.ctrl-a
を解放します。あるいは、組み込み画面インスタンスを制御するために接頭部文字をエスケープする必要はなく、tmuxペイン内でscreenを実行するためのものです。 (私はscreenを実行しているリモートサーバへのsshセッションを含むペインを持つローカルtmuxを使用してこれを頻繁に行います)もちろん、ctrl-sに何もしていないのは、端末では伝統的にフロー制御に使われていて、more
やless
のようなページングツールが一般的になった時代にさかのぼるからです。どこかのGUI端末プログラムでは、まだデフォルトでそのフロー制御機能が有効になっていると確信していますが、実際には1つにまとめられていません。私が試したすべてのgui端末プログラムは、デフォルトでは完全に無視されているように見えます。これにより、便利なキーの組み合わせがより生産的な用途に利用できるようになります。
ですから、(例えば)生のLinux端末の中からscreen/tmuxを実際に使っているのではなく、むしろGUIベースの端末から使っているのであれば、ctrl-s
を試してみることをお勧めします。それは私にとってtmuxとscreenの中で圧縮されてずっと便利になりました。
私は `(バックティック)が使われているのを聞いたことがありますが、実際のバックティックには2回入力するだけです。そのアクションに慣れているviユーザーにとっては良いかもしれません(あなたがCaps lockのことをしない限り)。
私は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
矛盾のない鍵は C-zこれは通常、プログラムを起動したシェル上で別のものを続行するためにプログラムをバックグラウンドに送信するために使用されるためです。私はtmuxがあるとき私はこれをしません。
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
+ a
やctrl
+ b
のような接頭辞は、どちらの方法でもVimの機能をシャドウ(オーバーラップ)させるためです。
最善の解決策は^ Cだと思います。 Emacsはプレフィックスキーとして^ Cを使っています、そしてシェルで^ Cをタイプする必要があるときはとにかく私はとにかく2つをタイプします。 :-)
unbind-key C-b
set -g prefix C-c
bind-key C-c send-prefix
個人的には、私にとってb
はCtrl
から離れすぎています。私がtmuxを使うとき、私は常にバインディングをC-bからC-aに変更します。 C-aとの主な矛盾はすべて選択ですが、これが私がtmuxを使用しているプログラムの問題であるとは私は思っていません。
GNU emacs、zsh、およびMS Windowsユーザーとして、私はControl-Tを使います。 (例.screenrc :)
エスケープ "^ T ^ T"
はいControl-Tには、UbuntuのaptitudeのプルダウンメニューやEmacsの転置文字のようなものがあります。
それは私のために両手が必要なので、私はC-oを無視しました。
私はCaps Lockを使っています、そしてOSXではそれを機能させるためにあなたは特別なことをする必要があります。
あなたはバックティックを使うことができます。 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にリマップしているので、バックティックを使うともっと理にかなっています。
バックティックをエスケープにマッピングするGNU画面の場合、〜/ .screenrcの次のコードが機能します。
escape ``
ここでのほとんどの答えは、キーの組み合わせの一部としてCtrlを使用しています。
Ctrlキーを押すと、小指がいつもCtrlキーを押し下げるようにしなければならなかったので、私の小指が痛くなり始めました。
私は私の左手の親指と右手の人差し指でタイプしたAlt-j
を使います、そしてそれは非常に便利です。私はこれまでに他のプログラムとの衝突も発見していません。
unbind C-b
set-option -g prefix M-j
私は バインディングctrl- \を接頭辞 として使うのが好きですが、これをLinux Mint 12で動作させるには、バインディングの一番下の部分をエスケープする必要がありました。そうでなければ、それはかかりません。ここで私の.tmux.confを見てください: emacsとvimの両方でtmuxを使う
私は、Macユーザーはバックティックよりも§
の方が便利だと思うと思います。
Mac以外のキーボードでは、バックティックはMacキーボードの§
とほぼ同じキーに配置されます。そのため、バックティックの使用を提案している人と同じ便利さを体験するには、Macキーボードの段落記号を使用します。
Macのキーボードでバックティックを使用するのは、(⇧)shift、(⌃)control、(⌥)alt-keysのすぐ近くにあるので、ややこしいです。 MacBookでは、左のfn
-キーの近くでも。