17

Я привык к iTerm2 (или Terminal.app для этого случая) на OS X. Но я хочу перейти на использование tmux (или screen, но проблема похожа на оба приложения).

Поэтому моя идея состоит в том, чтобы иметь одну вкладку iTerm с сеансом tmux, открытым с несколькими вкладками. Для перехода у меня есть базовая функция, которую мне нужно настроить в tmux: переключите вкладку 'n' с помощью cmd + n (например, Firefox, Chrome, сам iTerm2 и т.д.)

Однако я не могу найти способ сопоставления клавиши cmd на клавиатуре Mac. Сначала я попытался реализовать cmd в качестве префиксного ключа, но безуспешно. Я пытался установить

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

но ничего не работает. Это возможно? Мне не нужно привязывать префикс к cmd, но я хочу иметь возможность изменять вкладки tmux с помощью cmd+n.

Спасибо

5 ответов5

15

В iTerm2 вы можете сопоставить ярлыки с шестнадцатеричными кодами, которые отправляются в терминал. Перейти к настройкам iTerm2 -> Ключи. В глобальных сочетаниях клавиш нажмите + и добавьте желаемый ярлык, например, cmd + 1, который будет записан. Затем выберите "Отправить шестнадцатеричный код". В появившемся окне введите шестнадцатеричные коды, которые вы хотите отправить в tmux, через пробел. Ctrl-B равен 0x02, поэтому для «Ctrl-B 1» введите "0x02 0x31". Смотрите здесь для получения дополнительных шестнадцатеричных кодов: http://www.nthelp.com/ascii.htm

Я сопоставил Cmd с h, j, k, l для перемещения между панелями tmux, а Cmd с% и "для создания разбиений. Я, вероятно, сделаю нечто подобное, чтобы перемещаться между разделениями vim одним управляющим ключом.

8

Вы хотите вызвать последовательность нажатий клавиш (сначала Ctrl-b , затем n в диапазоне от 0 до 9).

Лучше всего использовать для этого утилиту быстрого доступа, например, Butler или Keyboard Maestro .


Используя Батлера:

Выберите + »Smart Item» Клавиши, настройте горячую клавишу Cmd-1 . Нажмите Ctrl-B , затем 1 для нажатия клавиш . Настройте его так, чтобы оно действовало только в Терминале (или iTerm). Он предупредит вас, что другим приложениям это может не понравиться, но вы уже это знаете.


Использование клавиатуры Maestro:

Создайте новую группу слева, которая доступна только в Терминале (или iTerm).

Добавьте новый элемент, запускаемый с помощью горячих клавиш (Cmd-1), и добавьте к его действиям два нажатия клавиш : Ctrl-B и 1 .


Возможно, вы также захотите взглянуть на эту тему - хотя я не использую Command и не работал для меня с помощью Terminal.


Из документации по tmux:

Привязать ключ к команде. Ключи могут быть указаны с префиксом 'C-' или 'ˆ' для клавиш ctrl или 'M-' для клавиш alt (meta). Флаг -r указывает, что этот ключ может повторяться, см. Параметр repeat-time.

Они не поддерживают третий ключ-модификатор.

2

Специальные ярлыки могут быть сделаны с Terminal.app. Я только что узнал на днях, но это, возможно, было возможно до льва.

Зайдите в "Настройки"> "Настройки" и перейдите на вкладку "Клавиатура". Теперь вам нужно добавить новое сочетание клавиш, нажав на значок плюса под полем. Теперь вы хотите установить комбинацию клавиш "Отправляет строку в оболочку".

Пример: допустим, я хочу установить M-LeftArrow для отображения в prefix-p (предыдущее окно).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

Теперь просто введите prefix-p в поле ввода, где prefix - это то, что вы установили для tmux (я использую cntrl-a, поэтому в окне отображается \001p). Обратите внимание, что если вы допустили ошибку, вместо фактически удаляемых символов будут вставлены удаляемые символы, поэтому нажмите кнопку "Удалить один символ", чтобы вернуться назад, если у вас возникнет ошибка.

Специальные символы, которые я установил, чтобы облегчить жизнь:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

Вы также можете изменить cntrl-что-нибудь и shift-что-нибудь, но помните, что это может помешать вашему $ EDITOR или другим программам, поэтому будьте осторожны с тем, какие специальные функции могут оказаться бесполезными.

Также обратите внимание, что я не мог понять, как дублировать эту функцию в iTerm2.

1

Вы также можете рассмотреть встроенную (но очень экспериментальную) интеграцию, которую iTerm2 предлагает с tmux:http://code.google.com/p/iterm2/wiki/TmuxIntegration

Таким образом, когда вы нажимаете Cmd-D, чтобы разделить экран, iTerm2 разделит вкладку для вас. Это замечательно, потому что разделение является родным, поэтому вы можете перетащить край в середине, чтобы заново отрегулировать ширину, или вы можете выбрать панель, нажав. То же самое для новых вкладок / окон (но ярлыки немного отличаются - иначе у вас не было бы возможности добавлять вкладки без Tmux).

Как и в случае с tmux, если вы отсоедините и снова присоедините, все будет сохранено для вас.

Однако есть два предостережения:* это очень экспериментальная функция и очень нестабильная для меня. * вам придется собрать tmux самостоятельно (используя архив где-то по ссылке выше).

-Крис

0

Вы также можете посмотреть этот пост в блоге с подробными пояснениями по интеграции tmux/iterm:http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/

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