Можно ли сделать одну или несколько панелей tmux «липкими»? Т.е. эти панели появятся во всех окнах, которые в данный момент доступны в моем сеансе tmux?
Это происходит на список рассылки каждый раз в виде некоторое время .
Нет, невозможно иметь панель в более чем одном окне.
Внутренний дизайн tmux допускает, чтобы окна были несколькими сессиями, но панель может принадлежать только одному окну.
Как говорит Крис, нет встроенной функциональности, позволяющей пометить панель как липкую, и этот вид имеет смысл, потому что не совсем понятно, как обрабатывать реструктуризацию всех панелей во всех других окнах. когда вы переключаете «липкость» какой-либо конкретной панели в текущем окне. Как правило, было бы плохо работать с макетом так, чтобы он даже не был виден пользователю.
Вы можете найти полезную привязку как это:
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 должен реализовать для нас, потому что практически невозможно сделать правильно с помощью сценариев, однако я не знаю, как это можно было бы сделать не путающим образом (см. Мое первое предложение ).