Интерактивный поиск сессий tmux
При переключении между сеансами tmux с помощью интерактивного меню сеансов (<prefix>-s
), вы можете перейти к определенному сеансу, набрав числовой или алфавитный индекс сеанса, например
(0) + first_session: 1 windows
(1) + second_session: 2 windows
(2) + third_session: 1 windows
(3) + secret_session: 1 windows
прессование 1
откроет second_session
сессия.
У меня часто открыто более 20 сеансов tmux, и я хотел бы иметь возможность искать, не просматривая весь список. Есть ли способ изменить поведение, чтобы иметь интерактивный поиск? То есть я бы хотел набрать sec
и иметь список, узкий для
(1) + second_session: 2 windows
(3) + secret_session: 1 windows
Я немного погуглил и ничего не нашел; такое поведение возможно?
2 ответа
Да, это так, но, насколько я знаю, вам понадобится дополнительный инструмент для самого поиска. Я использую fzf для (нечеткого) поиска. После установки fzf вы можете использовать следующую конфигурацию, чтобы настроить переключение сеанса с поиском:
bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
Я сам не понял этого, но взял это из публичной конференции Криса Туми.
@bartj3: Спасибо. Это супер круто!
Вот немного улучшенная версия (без sed и grep) для сеансов переключения и окон:
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"
ПРОБЛЕМА:
Если вы используете вышеупомянутое, когда синхронизированы панели, ваши клавиши поиска также будут печатать другие панели.
ВОПРОС:
У кого-нибудь есть идеи о том, как ограничить нажатия клавиш на панели поиска?