tmuxプレフィックスをOS Xのcmdキー(またはその他のバインディング)にバインドします


21

私はOS XでiTerm2(またはこの場合はTerminal.app)に慣れています。しかし、tmux(または画面、ただし問題は両方のアプリに似ています)を使用するようになりたいです。

したがって、私の考えは、1つのiTermタブに複数のタブでtmuxセッションを開くことです。移行を行うには、tmuxで設定する必要がある基本機能があります。cmd+ nを使用してタブ「n」を切り替えます(Firefox、Chrome、iTerm2自体など)

しかし、Macキーボードでcmdキーをマッピングする方法が見つかりません。最初にcmdをプレフィックスキーとして実装しようとしましたが、成功しませんでした。設定してみました

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

しかし、何も動作しません。これは可能ですか?プレフィックスをcmdにバインドする必要はありませんが、cmd + nでtmuxタブを変更できるようにしたいです。

ありがとうございました


回答:


8

キーストロークのシーケンスを呼び出します(最初にCtrl-b、次に0から9の範囲のn)。

最善の策は、ButlerKeyboard Maestroなどのキーボードショートカットユーティリティを使用してこれを行うことです。


バトラーの使用:

[ +]» [ スマートアイテム]»[キーストローク]を選択し、ホット キーを設定しますCmd-1。押してCtrl-B、その後、1キーストローク。ターミナル(またはiTerm)でのみ有効になるように構成します。他のアプリケーションが気に入らない可能性があることを警告しますが、すでに知っています。


Keyboard Maestroの使用:

ターミナル(またはiTerm)でのみ使用可能な左側に新しいグループを作成します。

ホットキートリガーCmd-1)によってトリガーされる新しいアイテムを追加し、そのアクションに2つのキーストロークを追加します:Ctrl-Bおよび1


また、このトピックを見てみたいかもしれません-使用しCommandないで、ターミナルを使用して私のために動作しませんでした。


tmuxドキュメントから:

キーキーをコマンドにバインドします。キーは、Ctrlキーの場合は 'C-'または 'ˆ'で、Alt(メタ)キーの場合は 'M-'で始まります。-rフラグは、このキーが繰り返される可能性があることを示します。repeat-timeオプションを参照してください。

3番目の修飾キーはサポートしていません。


なんて素晴らしいハックでしょう!それも動作します!バトラーがやり過ぎだと思われるため、キーボードマエストロを使用しました。ありがとうございました!
ルーベンフォンセカ

キーボードマエストロはこのために素晴らしく動作します
サムセリコフ

19

iTerm2では、端末に送信される16進コードにショートカットをマップできます。iTerm2設定->キーに移動します。[グローバルショートカットキー]で、[+]をクリックして、キャプチャされるcmd + 1などの希望のショートカットを追加します。次に、「16進コードの送信」を選択します。表示されるボックスに、スペースで区切ってtmuxに送信する16進コードを入力します。Ctrl-Bは0x02であるため、「Ctrl-B 1」には「0x02 0x31」と入力します。その他の16進コードについては、こちらをご覧くださいhttp : //www.nthelp.com/ascii.htm

tmuxペイン間を移動するためにh、j、k、lでCmdをマップし、分割を作成するために%と "でCmdをマップしました。おそらく、1つのコントロールキーでvimスプリット間を移動するのと同じようなことをします


これは間違いなくiTerm2を使用している人にとって最良の答えです。ありがとう!
newUserNameHere

1
何らかの理由で、これは私のiTerm2ビルド3.0.2では動作しません
-jasonszhao

これが機能しない場合、デフォルトでiTerm2がcmdキーをswitch-tabにバインドしている可能性があります。修飾子が衝突している可能性があります。これをCMD + nで動作させるには、swithタブキーをオプションに変更する必要がありました
Surfrdan

2

Terminal.appで特別なショートカットを作成できます。先日知りましたが、ライオンの前にこれが可能だったかもしれません。

[設定]> [設定]に移動し、[キーボード]タブをクリックします。ここで、ボックスの下のプラスアイコンをクリックして、新しいキーボードショートカットを追加する必要があります。ここで、「文字列をシェルに送信する」キーコンボを設定します。

例:M-LeftArrowをマップするように設定するとしますprefix-p(前のウィンドウ)。

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

ここで、tmuxに設定したものをprefix-p入力ボックスに入力しますprefix(ボックスが表示されるようにcntrl-aを使用します\001p)。間違えた場合、実際に文字を削除するのではなく、削除文字が挿入されることに注意してください。混乱した場合には、「1文字削除」ボタンを押して後方に移動します。

生活を楽にするために設定した特殊文字:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

cntrl-anythingとshift-anythingを変更することもできますが、これらは$ EDITORまたは他のプログラムに干渉する可能性があることを忘れないでください。

また、iTerm2でこの機能を複製する方法がわからなかったことにも注意してください。


1

iTerm2がtmuxと提供するネイティブ(ただし非常に実験的)な統合を検討することもできます。http://code.google.com/p/iterm2/wiki/TmuxIntegration

これにより、Cmd-Dを押して画面を分割すると、iTerm2によってタブが分割されます。分割はネイティブなので、これは素晴らしいことです。そのため、中央のエッジをドラッグして幅を再調整したり、クリックしてペインを選択したりできます。新しいタブ/ウィンドウの場合も同様です(ただし、ショートカットは少し異なります。そうでない場合、非tmuxタブを追加する方法はありません)。

tmuxと同様に、デタッチして再アタッチすると、すべてが保存されます。

ただし、次の2つの注意事項があります。*これは非常に実験的な機能であり、非常に不安定です。* tmuxを自分でビルドする必要があります(上記のリンク上のアーカイブを使用)。

-クリス


私はそれが2年だったことを知っていますが、これがまだ機能している場合、何か考えはありますか?リンクの指示に従いましたがcmd+D、tmuxではなくiTerm2のペインを分割しました。
サムセリコフ

1
@SamSelikoffで始める必要がありtmux -CCます。
jasonszhao

0

tmux / iterm統合に関する非常に詳細な説明があるこのブログ投稿もご覧ください:http ://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/


2
Webページは消え、常に移動します。少なくともブログ投稿の内容を要約し、そのタイトルと著者の詳細を提供してください。そうすることで、リンクが壊れてもあなたの答えが完全に役に立たないようにできます。
デビッドリチャービー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.