зациклить окна tmux с тем же именем

Существует обширный набор бесплатных криминалистических инструментов под названием :Ghiro. Возможно, стоит взглянуть на них.

Этот пакет может выполнять пакетную проверку целых каталогов или только одного файла. Есть довольно много инструментов, и я все еще изучаю их сам.

Ссылка на Ghiro ниже, Не будучи «упакованным» и частью репозиториев, о которых я знаю на момент написания, для его установки требуется найти некоторые зависимости -. Документация неплохая и бесплатная.

http://www.getghiro.org/

0
27.04.2021, 04:31
2 ответа

Я создал базовое решение.

  1. Сохраните следующий скрипт как _tmux-cycle-samenameи сделайте его исполняемым(chmod +x _tmux-cycle-samename).

    #!/bin/sh
    
    if [ "$1" = "-r" ]; then filter=tac; else filter=cat; fi
    
    name="$(tmux display-message -p '#W' | sed 's|\(.\)|[\\\1]|g')"
    
    tmux select-window -t "$(
       tmux list-windows -F '#{window_active} #{window_id} #W' \
       | grep '^[01] @[0123456789]* '"$name"'$' | "$filter" \
       | awk '
          NR==1 {result=$2}
          { if (seen==1) {result=$2; exit} 
            seen=$1
          }
          END {print result}
       '
    )"
    

    Сценарий извлекает правильное имя(tmux display-message …)и подготавливает строку (sed …), поэтому при последующей интерпретации как регулярное выражение имя сопоставляется буквально. Затем сценарий перечисляет окна (tmux list-windows …), выбирает совпадающие (grep …), сохраняет или меняет порядок(catили tacиз расширения$filter)и находит следующее неактивное окно(awk …). Наконец найденное окно выбирается(tmux select-window …).

  2. Добавьте их в свой~/.tmux.conf:

    bind-key -T prefix > run-shell '/full/path/to/_tmux-cycle-samename'
    bind-key -T prefix < run-shell '/full/path/to/_tmux-cycle-samename -r'
    

    Если _tmux-cycle-samenameможно разрешить с помощью PATH, вам не нужно указывать полный путь.

  3. Если уже внутри tmux, запустите tmux source-file ~/.tmux.conf. Сервер tmux, запущенный заново, автоматически создаст файл.

  4. Попробуйте префикс > и префикс < в вашем tmux, чтобы проверить решение (префикс по умолчанию Ctrl + b).

1
28.04.2021, 22:51

Есть команда переключения на последнюю посещенную панель:ctrl-b+;

Вы можете привязать клавишу #(или что угодно, что вам нравится ), чтобы переключиться на последний посещенный панель tmux. Я выбрал #, потому что это похоже на то, как :b#переключается на последний буфер. в живом:

# go to last pane (like b# in vim)
bind '#' select-pane -l

Таким образом, вы можете просто нажать префикс tmux (по умолчанию ctrl-b), а затем #.

0
28.04.2021, 22:51

Теги

Похожие вопросы