Я использую эту tmux-конфигурацию, основанную на посте из bartj3 в [1].

bind j split-window -v "tmux list-sessions -F '#S' | fzf --reverse | xargs tmux switch-client -t"
bind k split-window -v "tmux list-window -F '#W' | fzf --reverse | xargs tmux select-window -t"

Это позволяет вам в интерактивном режиме (поиск по мере ввода) искать другие сессии и окна по имени и, следовательно, переключаться между ними более эффективно.

ПРОБЛЕМА:

Если вы используете вышеупомянутое, когда синхронизированы панели, ваши нажатия клавиш поиска будут также печатать в других (не поисковых) панелях.

ВОПРОС:

У кого-нибудь есть идеи о том, как ограничить нажатия клавиш на панели поиска?

[1] Интерактивный поиск сессий tmux

1 ответ1

0

Вы можете сохранить текущее состояние synchronize-panes перед вызовом fzf а затем восстановить его on потом , если это необходимо. Например, это работает для меня, используя bash в качестве оболочки по умолчанию:

bind-key k split-window -v '\
 if [[ $(tmux show-window-option synchronize-panes) == *on ]];\
 then tmux set-window-option -q synchronize-panes off;\
     restore="tmux set-window-option -q synchronize-panes on";\
 fi;\
 tmux list-windows -F "#W" | fzf --reverse | xargs tmux select-window -t;\
 $restore'

Поскольку это длинная команда оболочки, ее можно разбить на несколько строк при условии, что каждая из них заканчивается обратной косой чертой, а точки с запятой (;) используются так, как если бы они были в одной строке. Вы можете предпочесть поместить это как скрипт оболочки в файл в вашем PATH и вместо этого вызывать его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .