Могу ли я сделать панель tmux «липкой»?

9

Можно ли сделать одну или несколько панелей tmux «липкими»? Т.е. эти панели появятся во всех окнах, которые в данный момент доступны в моем сеансе tmux?

Arne
источник

Ответы:

5

Это происходит на список рассылки каждый раз в виде некоторое время .

Нет, невозможно иметь панель в более чем одном окне.

Внутренний дизайн tmux допускает, чтобы окна были несколькими сессиями, но панель может принадлежать только одному окну.

Крис Джонсен
источник
3

Как говорит Крис, нет встроенной функциональности, позволяющей пометить панель как липкую, и этот вид имеет смысл, потому что не совсем понятно, как обрабатывать реструктуризацию всех панелей во всех других окнах. когда вы переключаете «липкость» какой-либо конкретной панели в текущем окне. Как правило, было бы плохо работать с макетом так, чтобы он даже не был виден пользователю.

Вы можете найти полезную привязку как это:

bind -n M-k move-pane -t ':+'
bind -n M-j move-pane -t ':-'

Это было бы удобно для пользователя Vim, привыкшего к J и K для перемещения влево и вправо. С этим связыванием tmux вступит и проглотит Alt+Kи Alt+Jпереместит вашу активную панель в правое и левое окна соответственно.

Это выдернет текущее окно, в котором вы находитесь, и вставит его в соседнее окно tmux. Вы даже можете указать, какой индекс вставлять в макет целевого окна. Смотрите man-страницу для других опций, которые могут быть предоставлены move-pane.

Таким образом, конечно, все еще есть изменение макета (одно в исходном окне, которое неявно и ограничено одной панелью, и одно в целевом окне, также ограниченное одной панелью и которое непосредственно прослеживается), но это намного более «контролируется» "и до тех пор, пока вы удерживаете фокус на панели, которая должна быть" липкой ", вы достигаете своей цели, более или менее.

Я все еще нахожу это неудовлетворительным из-за необходимости фокусировки панели, которая должна быть «липкой», и из-за этого сложно быстро выполнить эту команду, если вы хотите, чтобы липкая панель была всегда видимой, но на самом деле вы никогда не фокусировали ее. ,

Есть возможность придумать немного более сложный сценарий tmux, который использует специальные имена для панели, которую вы намереваетесь придерживаться, и вручную подбирает вещи для вас. Это звучит как боль в заднице, хотя.

Последний вариант для развлечения - использовать вложенный tmux: поместите липкую панель в родительский tmux, а на другой панели должен быть tmux, в котором размещены остальные ваши терминалы. Таким образом, вы можете свободно переключаться в tmux вашего ребенка. Проблема в том, что вам нужно придумать что-то работоспособное, потому что по умолчанию вам нужно будет дважды нажать клавишу префикса, чтобы выполнить те же задачи. Очень раздражает. У меня есть привязки, которые интеллектуально «туннелируют» через любые вложенные tmux, но логикой этих неэффективных схем передачи сообщений быстро становится трудно управлять. И ограничением этого является то, что «липкая панель» здесь должна охватывать всю высоту или ширину, она не может быть углом.

В заключение я бы сказал, что это одна из функций, которую tmux должен реализовать для нас, потому что практически невозможно сделать правильно с помощью сценариев, однако я не знаю, как это можно было бы сделать не путающим образом (см. Мое первое предложение ).

Стивен Лу
источник
2
Что бы это ни стоило, я думаю, вместо того, чтобы быть прикрепленным, потому что действительно трудно определить, что делать с другими окнами, должна быть панель клонов, которую те, кто действительно хочет липкости, могли бы использовать для достижения того же результата. И, честно говоря, именно панель клонов, которую я искал, привела меня сюда. Это было бы хорошей особенностью.
Томми Кинтола