1

Приятной особенностью экрана является возможность назначать сочетания клавиш для групп, называемых "классами". С помощью bind -c вы можете назначить эти ярлыки определенному классу, а привязка command -c <class> к ключу позволит вам выбрать этот класс. Это позволило многоуровневые сочетания клавиш. Например, я использовал клавишу x чтобы выбрать класс, выделенный для общих команд. Имея эти сочетания клавиш запуска в своем собственном классе, можно использовать мнемонические ключи, не беспокоясь о конфликтах с обычным набором привязок клавиш. Есть ли способ воспроизвести эту функцию в tmux?

пример

# from my .screenrc
bind -c execute o screen -t imap 10 offlineimap.sh -o
bind -c execute m screen -t mpd ncmpcpp
bind -c execute w screen -t vw vimwiki
# ... more application launchers 
bind x command -c execute

Использование: префикс x входит в класс ключа запуска, куда я помещаю все сочетания клавиш приложения.

3 ответа3

5

После лучшего понимания того, что вы пытаетесь сделать, я думаю, что лучше всего использовать короткий сценарий bash (извините, я не думаю, что существует только tmux решение, похожее на классы screen команд):

В .tmux.conf:

bind-key x command-prompt -p "launch what?" " "run-shell \"tmux-launcher %%\""

tmux-launcher должен быть исполняемым сценарием оболочки где-то на вашем пути:

#!/bin/bash
case $1 in 
  o) tmux new-window -n imap -t 10 offlineimap.sh -o ;;
  m) tmux new-window -n mod ncmpcpp ;;
  w) tmux new-window -n vw vimwiki ;;
esac

Недостатком является то, что вы должны ввести return после буквы, которая выбирает окно для создания.

3

Мне недавно сообщили о подходе switch-client к этому

привязать join-pane к prefix + t*

tmux bind-key t switch-client -Ttable1
tmux bind-key -Ttable1 '*' join-pane
0

Насколько я знаю, tmux не поддерживает такие классы команд. Тем не менее, может быть возможно выполнить задачу, для которой классы screen команд по-другому подходят в tmux .

Вот пример из screen страницы экрана , где могут быть выбраны окна с индексами выше 9:

 bind -c demo1 0 select 10
 bind -c demo1 1 select 11
 bind -c demo1 2 select 12
 bindkey "^B" command -c demo1

Командный класс 'demo1' позволяет вам выбрать окно 12, используя "Ctrl-a Ctrl-B 2" (или это будет просто "Ctrl-B 2"? Я ржавый с конфигурацией screen ).

В tmux вы можете выбрать окно 12 с помощью «Ctrl-b w c», где «Ctrl-b w» - это привязка клавиш по умолчанию для вызова команды choose-window , а «c» - это ярлык для выбора окна 12 из интерактивного окна. меню окон.

Итак, мой общий совет - изучить набор команд tmux чтобы увидеть, есть ли идиома tmux для того, что вы могли бы сделать, используя классы команд на screen . Если у вас есть конкретная задача, я рекомендую опубликовать ее как отдельный вопрос.

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