hotkeys – screen や tmux で最も競合しない接頭辞/エスケープシーケンスは何ですか?

gnu-screen hotkeys tmux

screenはCtrl+Aを使います。 一方、tmuxはscreenの中で開発されたものでCtrl+Bを使います。しかし、どちらのキーストロークもエディタやシェルなどで使われます。したがって、どちらか一方を選択すると、tmux や screen の中で使用されている場合には、それらのツールのユーザーエクスペリエンスや機能性が低下します

他のプログラムやシェルのキーバインドと最も衝突しない接頭辞は?

  105  community wiki  None


ベストアンサー

キーボードのレイアウト上で便利な位置にあれば、^\ (別名 ^|) がベストだと思います。他のプログラムで使うことはほとんどありません

  • プロセスにSIGQUITを送信する
  • ^Cが傍受された場合に、シェル内でforループまたはwhileループをアボートする
  • toggle-input-method emacsで

他の使い方を知らない。慣れてきたら、tmuxscreen以外のプロセスを誤って殺してしまわないように気をつけてください。私の場合は数年に一度しかありませんでしたが

~/.tmux.conf

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

~/.screenrc

escape ^|^|

54  community wiki  2015-11-20


tmuxでbacktickをエスケープとして使いたい人は、追加したくなるでしょう

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

この最後の1つが重要で、そうでなければ他の目的のためにバックスティックを入力することはできません 🙂

55  community wiki  2012-03-06


Ctrl+Aは、EmacsモードのBashを含むEmacsでも問題が発生することが知られています。これは問題なさそうですね

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

今思ったのですが、Emacsではなくviを使う場合、いくつかの選択肢があります。Ctrl+Gはあまり使われていないので、例えば

21  community wiki  2020-05-09


グローバルに CAPS-LOCKESC にマッピングしました。そして、プレフィックスに M-Space (つまり CAPS-LOCK+ Space) を使います

14  community wiki  2012-11-09


私はCtrl-Qtmuxで使っていますが、今のところうまくいっています。しかし、シェルフロー制御と衝突することに言及しなければなりません。デフォルトでは、Ctrl-Sで出力を停止した後に、Ctrl-Qを使って再度出力を有効にします。誤って Ctrl-S を押した後に何度かスタックしたシェルに驚いたことがありますが、私は Ctrl-S を押してはいけないことを学びました

(stty -ixonでフロー制御を完全にオフにしたり、stty startstty stopに異なるキーをバインドしたりすることもできます)

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

12  community wiki  2011-06-23


画面には複雑なシステムを使っている。私のデフォルトのエスケープは、「\140140」(Backtick)になっています。このCtrl-Aは、Zshの中ではEmacsもコマンドライン編集も複雑で、Ctrl-O(ほとんどの画面操作は両手で行う)が嫌いです

私は’s’をスクリーン1にリバインドして、新しいセッションがキーボードの左から右へと1から始まるようにしています。 これにより、スクリーン0を私が永続的なウィンドウや参照ウィンドウと考えているもののために確保することができます。ウィンドウを切り替えるには、(backtick)1、(backtick)2、(backtick)3の片手ジェスチャーがとても簡単です

Unix 環境で backtick を使うときの問題は、シェル/Perl スクリプトのコードをカットアンドペーストしようとするときです。このため、私はエスケープ文字を切り替えるために bindkey 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  community wiki  2020-05-09


私は ^Space を特殊な操作や一般的な操作のために予約しておきたいのですが、今は tmux の prefix としてマッピングしてみています

指を自由にして、入力したいコマンドに瞬時にジャンプできます。試してみてください

6  community wiki  2010-08-20


遅ればせながらの提案。ctrl-s.ctrl-sには多くの利点がある

  1. ホームの列で
  2. まだctrl-aに近い(実際、ほとんどのタイパーにとってはctrl-aで使ったのと同じ2本の指を使うことになる)ので、ctrl-aからctrl-sへの筋記憶の切り替えは些細なことである — 私にとっては、最初に試してから約1時間で自然になった
  3. emacs スタイルの “行頭に戻る” や vim スタイルの “数値を増やす” 操作のために ctrl-a を解放します。あるいは、埋め込まれたスクリーンインスタンスを制御するためのプレフィックス文字のエスケープを気にすることなく、 tmux ペインの中でスクリーンを実行することができます。(私は、リモートサーバへの ssh セッションを含むペインを持つローカルの tmux を使って、よくこのようなことをしています。)
  4. 他の一般的に使われているターミナル機能を上書きしたり、エスケープ要件を追加したりすることはありません

もちろん、ctrl-s に何もないのは、moreless のようなページングツールが一般的になる前の時代にさかのぼり、ターミナルでは伝統的にフローコントロールに使われていたからです。どこかのGUIターミナルプログラムがデフォルトでフローコントロール機能を有効にしていると思いますが、私は実際にそれに遭遇したことがありません; 私が試したGUIターミナルプログラムはすべてデフォルトでは完全に無視されているようです

ですから、もしあなたが実際に screen/tmux を (例えば) 生の Linux 端末からではなく、GUI ベースの端末から使うのであれば、ctrl-s を試してみることをお勧めします

6  community wiki  2013-06-25


競合のないキーは、プログラムを起動したシェル上で別のことを続けるためにバックグラウンドに送るのが普通なので、C-zになるかもしれません。tmuxを持っているときにはやっていません

5  community wiki  2016-02-03


(backtick) が使われているのを聞いたことがありますが、実際の backtick のためには 2 回入力する必要があります。アクションに慣れている vi ユーザーには良いかもしれません (Caps ロックをしない限り)

4  community wiki  2010-08-27


私は、viやemacsにあまり干渉しないC-jをお勧めします。基本的に、私は Susam Pal さんのコメントに同意しています

私はC-jをプレフィックスキーとして使用しています。これは ~/.tmux.conf にあります

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

4  community wiki  2016-05-18


Programmer Dvorakのキーボードレイアウトでは、ctrl+-のように、マイナス(ダッシュ)キーをプレフィックスとして使うのは、なかなかいい感じです。 マイナスキーはqwertyレイアウトではシングルクォートキーの位置にあります。また、ctrlキーとしてcaps lockキーを使用するようにしています。以下はプレフィックスとして設定するためのtmuxのコンフィグです

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

不思議に思うかもしれませんが、なぜマイナスではなくアンダースコアが使われているのでしょうか?Tmux: C- (control-minus)? を参照してください。qwerty の場合は、tmux のプレフィックスキーを C-‘? にバインドするにはどうすればよいでしょうか?

Vim/Neovimを使うならば、これは完璧な接頭辞だと思います。なぜなら、ctrl+actrl+bのようなプレフィックスは、どちらにしてもVimの機能に影を落とす(重なる)からです

3  community wiki  2020-06-12


個人的には、bCtrlとはあまりにもかけ離れています。tmuxを使うとき、私はいつもバインディングをC-bからC-aに変更しています。C-aとの主な衝突はselect allですが、tmuxを使っているプログラムではこれが問題になったことはありません

2  community wiki  2009-11-24


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

escape “^T^T”

はい、Control-TはUbuntuの適性のプルダウンメニューやEmacsのトランスポーズ文字のように、それに縛られた何かを持っています

C-oは両手が必要なので無視しました

2  community wiki  2009-12-20


最良の解決策は^Cだと思います。Emacs は ^C をプレフィックスキーとして使用していますが、シェルで ^C を入力する必要があるときは、ほとんどいつも 2 つのキーを入力しています。)

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

2  community wiki  2013-03-04


Caps Lockを使っていますが、OSXでは特別なことをしないと使えません

TMUX: Rebinding CAPS LOCK to CTRL + B
TMUX: Rebinding CAPS LOCK to CTRL + B. GitHub Gist: instantly share code, notes, and snippets.

2  community wiki  2013-03-16


backtick を使うことができます。古いバージョンの tmux は backtick をサポートしていないものもあるので、以下のようにすれば回避できます (これは C-`, C-@, C-space を同時にメタとして追加することになりますが)

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

私は普段CapsLockをCtrlにリマップしているので、Backtickがあるとさらに意味があります

1  community wiki  2013-12-04


ここでのほとんどの回答は、キーの組み合わせの一部としてCtrlを使用しています。 Ctrlを使っていると、常にCtrlまで広げていたので、小指が痛くなってきました。 私は左手の親指と右手の人差し指で入力するAlt-jを使っていますが、とても便利です。また、他のプログラムとの衝突も今のところありません

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

1  community wiki  2019-03-05


GNUスクリーンでは、~/.screenrcにある以下のようにバックティックをエスケープにマッピングするとうまくいきます

escape ``

1  community wiki  2019-06-30


私はAlt+Fを使っています。追加したばかりですが、C-aC-bよりもずっといいです。M-fはホームポジションからの移動が不要で(altがすでに親指の下にあるので)、小指に負担がかからない

unbind C-b
set-option -g prefix M-f

1  community wiki  2020-05-28


私は binding ctrl-をプレフィックスとして使うという提案が好きですが、これを Linux Mint 12 で動作させるためには、下の方にあるバインディングの場所をエスケープしなければなりませんでした。そうしないとうまくいきません。私の .tmux.conf を参照してください。tmux を emacs と vim の両方で使う

0  community wiki  2017-03-20


Macユーザーは裏技よりも§の方が便利だと思います

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

MacのキーボードでBacktickを使うのは、左の(⇧)shift、(⌃)control、(⌥)alt-keyのすぐ近くにあるのでトリッキーです。MacBookでは左のfnキーの近くにさえあります

0  community wiki  2016-07-01


タイトルとURLをコピーしました