2013-06-02 7 views
7

特定のペインにセカンダリサイズのパラメータを指定して、ペインにフォーカスして新しいサイズを割り当て、終了時にそれを返すようにしたいと考えています。だからtmuxはフォーカスを合わせてサイズを変更します

[]が集中ターミナルカーソルを表します)

________________ 
|$ ls |  | 
|a's |  | 
|dir |  | 
|$  |$ [] | 
|______|_______| 

スワップペインフォーカス

_______________ 
|  | | 
|$ ls | | 
|a's dir | | 
|$ [] |$ | 
|________|____| 

のように。最近のtmuxバージョンでペインのサイズを変更してからは、特にそれをスライスするのではなく、コンテンツを再フローするという素晴らしい仕事をしています。

この例では、左ペインの幅は、ピントが合っているときに自動的に8カラムに切り替わるように設定されています。フォーカスが失われたときにシンナーが細くなっています。コンテンツがまだ見えていることに気をつけてください(これはtmuxが大好きな理由です)。しかし、現在フォーカスのあるペインを自動的に展開してケーキを食べることもできます。

私はおそらくresize-paneコマンドのアプリケーションを自動化するいくつかの精巧なバインドを思いついて、私の希望に合うように精巧な量にすることができます。しかし、私はそこに何らかの組み込み機能があることを期待していました。

各ペインの補助的な4タプルの整数の変更を追跡して許可することが現実的です。これらは、ペインのフォーカスに合わせて行う操作の量を指定します。また、そのペインのデフォーカス時には、逆方向になります。操作の量を指定します。

これの他のより合理的な配合があるかもしれません。

+0

まだこれを行う方法はありますか? – golfadas

+0

悲しいことに、私はより速くサイズを変更するためにバインドを増やしましたが、ペインのサイズを調整するために8個のバインドがあり、 "戻る"動作がないので、まだ手作業がたくさんあります。私はまだ新しいバインドを使用する習慣を形成していません。そうではありません。 –

答えて

1

部分的な解決策が見つかりました... Iveはvimと同期して私のペインの切り替えを取得しました。私はスイッチペインを切り替えるたびにtmuxのサイズを変更します。

これは最適ではありません。これは、tmuxが現在のペインのサイズを確認してそれに応じてサイズを変更しないためです。とにかく、ctr-hまたはctrl-kを2回実行してペインのサイズを変更することができるので、かなりうまく動作します。

関連の設定は以下の通りです:

# Sync panes with vi 
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-h) || tmux select-pane -L && tmux resize-pane -R 30" 
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-l) || tmux select-pane -R && tmux resize-pane -L 30" 
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-j) || tmux select-pane -D" 
# Move panes up and down, wont resize 
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-k) || tmux select-pane -U" 
1
これまでの憶測に

申し訳ありませんが、これだけ量が、私はそれいくつかについて考え、そして私はそれをサポートできるTMUXに組み込まれている機能があると思いますこれには多少のスクリプトが必要です。

この質問を参照してください。

http://sourceforge.net/p/tmux/mailman/message/31221459/

select-layoutコマンドは(おそらく!??!)レイアウトに任意の変異を適用するために使用することができるように基本的にはそれが見えます。私はそれが動作する場合、テストしていない。

トーマス・アダムはlayout-custom.cソースを見て、何が起こっているのかを知ることを提案しました。それは私の知る限りです。しかし、実際にはプログラムでレイアウトを変更し、select-layoutに渡す作業文字列を生成することが可能であれば、これは非常に良いアプローチになります。

更新:は今、私は(ちょうど、適切な文字列を生成することは確かに任意のレイアウトにリサイズ達成できるかどうか)これを直接求めているが、まだ氏アダム自身が、私はと疑う理由から、応答を受信しチェックサムを渡す文字列を生成できるのであれば、これはうまくいきます。私はペインのサイズを変更することができます(list-windowsコマンドによって生成された)文字列を記録した後にそれらを変更してから、文字列のレイアウト。これは、レイアウトや何かを "保存"するようにとらなければならない何らかの明示的なアクションがないことを意味します。チェックサムは文字列でゴミ/病的な文字列が混乱するのを防ぐのに役立つちょっとした巧妙な方法ですペインレイアウトの再配置を行うインタープリター。

これを機能させるには、構造的に重要でない文字列を渡す必要があります。しかし、チェックサムと残りを計算するコードは、layout-custom.cには明白です。ある日、適切な変換を実装するシェルスクリプト(またはコードを持ち上げることができる場合はCプログラムのみ)を使用して戻ってくるでしょう。楽しかったです。

はい、私はこれを突き出し、その素敵な賞金を手に入れましたが、本当の仕事があります。TM残念なことに今夜私を待っています。

+0

それはまだ素晴らしい答えだった、恩恵はあなたとあなたの情報です! – golfadas

関連する問題