прив’язати префікс tmux до клавіші cmd OS X (або будь-якої іншої прив'язки)


21

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

Тому моя ідея полягає в тому, щоб мати одну вкладку 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.

Дякую


1
karabiner-elements має специфічну прив'язку для tmux pqrs.org/osx/karabiner/complex_modifications/#modifier-keys
Fabrizio Bertoglio

Відповіді:


8

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

Ваша найкраща ставка - скористатися утилітою для клавіатурних скорочень, наприклад Butler або Keyboard Maestro, щоб зробити це для вас.


Використання Батлера :

Виберіть + »Розумний елемент» Клавіші натискання , конфігуруйте гарячу клавішу Cmd-1. Натисніть Ctrl-B, потім 1для натискання клавіш . Налаштуйте його дійсним лише у Terminal (або iTerm). Він попередить, що інші програми можуть не сподобатися, але ви це вже знаєте.


Використання клавіатури Maestro :

Створіть нову групу зліва, яка доступна лише у Terminal (або iTerm).

Додайте новий елемент, викликаний тригером гарячої клавіші ( Cmd-1), і додайте два дії клавіш до його дій: Ctrl-Bі 1.


Ви також можете ознайомитись з цією темою - не використовує Commandі не працює для мене за допомогою терміналу.


З документації на tmux :

Прив’язати клавішу до команди. Ключі можуть бути вказані з префіксом "C-" або "ˆ" для клавіш ctrl, або "M-" для клавіш alt (meta). Прапор −r вказує, що ця клавіша може повторюватися, див. Параметр часу повторення.

Вони не підтримують третій ключ модифікатора.


ом, який дивовижний хак! це теж працює! використовується клавіатура Maestro, оскільки Батлер здається непосильним. Дякую!
rubenfonseca

Клавіатура Маестро чудово працює для цього
Сем Селікофф

19

У 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 одним ключем керування.


Це, безумовно, найкраща відповідь для тих, хто використовує iTerm2. Спасибі!
newUserNameHere

1
Чомусь це не працює над моїм iTerm2 build 3.0.2
jasonszhao

Якщо це не працює, це може бути тому, що iTerm2 за замовчуванням прив’язує клавішу cmd до перемикача. Ваш модифікатор може зіткнутися. Мені довелося змінити клавішу вкладки
Surfrdan

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 самостійно (використовуючи архів десь за посиланням вище).

-Кріс


Я знаю, що минуло два роки, але будь-яка ідея, якщо це все ще працює? Я дотримувався інструкцій за вашим посиланням, але cmd+Dрозбиває панелі iTerm2, а не tmux.
Сем Селікофф

1
@SamSelikoff Ви повинні почати з цього tmux -CC.
jasonszhao

0

Ви також можете переглянути цю публікацію в блозі, де є дуже детальні пояснення щодо інтеграції tmux / iterm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/


2
Веб-сторінки зникають і рухаються постійно. Принаймні узагальнюйте вміст публікації в блозі та дайте детальну інформацію про її назву та автора, щоб ваша відповідь не стала абсолютно непотрібною, якщо посилання розривається.
Девід Річербі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.