Интерактивный поиск сессий 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"

ПРОБЛЕМА:

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

ВОПРОС:

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

Другие вопросы по тегам