Я хотел бы удалить панель из выбора с помощью ctrl+b arrow-keys
. Это потому, что у меня есть панель, отображающая время с помощью tmux clock-mode -t 2
, и я никогда не хочу переключаться на эту панель.
Tmux: запретить переход на определенную панель
Ответы (1)
Это решение похоже на проблему, на которую я ответил на дочернем сайте unix.stackexchange, и оно не идеально.
tmux имеет флаг для каждой панели, сообщающий, находится ли она в режиме. Например, display -p #{pane_in_mode}
для панели в режиме часов выводит 1
. К сожалению, вы не можете различить, скажем, режим копирования и режим часов. Однако, если у вас маловероятно, что одновременно будет много панелей в режиме, вы можете написать небольшой сценарий оболочки для перехвата соответствующих привязок и проверить, не попало ли результирующее движение в панель в режиме. режим. Если да, то скрипт повторяет движение, возможно, к следующему окну.
Создайте следующий файл mytmux
в PATH и сделайте его исполняемым (chmod +x mytmux
):
#!/bin/bash
# https://stackoverflow.com/a/51232832/5008284
noclock(){
tmux "$@"
inmode=$(tmux display -p '#{pane_in_mode}')
[ "$inmode" = 1 ] && tmux "$@"
exit 0
}
case $1 in
-noclock)shift
: ${1?select-pane cmd and args}
noclock "$@" ;;
esac
затем настройте следующие привязки в вашем ~/.tmux.conf
:
bind-key -T prefix o run-shell 'mytmux -noclock select-pane -t :.+'
bind-key -T prefix l run-shell 'mytmux -noclock select-pane -l'
bind-key -r -T prefix Up run-shell 'mytmux -noclock select-pane -U'
bind-key -r -T prefix Down run-shell 'mytmux -noclock select-pane -D'
bind-key -r -T prefix Left run-shell 'mytmux -noclock select-pane -L'
bind-key -r -T prefix Right run-shell 'mytmux -noclock select-pane -R'
Вам нужно будет расширить это, если вы хотите, например, обрабатывать несколько сеансов. Я поставил select-pane -l
в привязках, но это бесполезно, так как если он будет повторяться, он просто вернется туда, откуда вы начали.