Существует обширный набор бесплатных криминалистических инструментов под названием :Ghiro. Возможно, стоит взглянуть на них.
Этот пакет может выполнять пакетную проверку целых каталогов или только одного файла. Есть довольно много инструментов, и я все еще изучаю их сам.
Ссылка на Ghiro ниже, Не будучи «упакованным» и частью репозиториев, о которых я знаю на момент написания, для его установки требуется найти некоторые зависимости -. Документация неплохая и бесплатная.
Я создал базовое решение.
Сохраните следующий скрипт как _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 …
).
Добавьте их в свой~/.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
, вам не нужно указывать полный путь.
Если уже внутри tmux
, запустите tmux source-file ~/.tmux.conf
. Сервер tmux
, запущенный заново, автоматически создаст файл.
Попробуйте префикс > и префикс < в вашем tmux
, чтобы проверить решение (префикс по умолчанию Ctrl + b).
Есть команда переключения на последнюю посещенную панель:ctrl-b
+;
Вы можете привязать клавишу #
(или что угодно, что вам нравится ), чтобы переключиться на последний посещенный панель tmux. Я выбрал #
, потому что это похоже на то, как :b#
переключается на последний буфер. в живом:
# go to last pane (like b# in vim)
bind '#' select-pane -l
Таким образом, вы можете просто нажать префикс tmux (по умолчанию ctrl-b
), а затем #
.