Переключение вкладок в терминале Mac с помощью Ctrl + PageUp / PageDown

10

Я недавно начал использовать Mac (под управлением Lion), и есть одно несоответствие, которое доходит до меня.

В Chrome и MVim я могу переключать вкладки с помощью Ctrl+ PageUp/ PageDown. Но в Терминале я должен использовать Cmd+ Shift+ Left/ Right.

Я хотел бы изменить последний на Ctrl+ PageUp/ PageDown, но я не могу этого сделать.

Когда я захожу в «Системные настройки» → «Клавиатура» → «Сочетания клавиш» → «Сочетания клавиш» приложения и добавляю ярлык к терминалу «Выбрать следующую вкладку» терминала, я могу установить его практически любым, если он не содержит клавиши PageUp / PageDown.

Почему есть такое ограничение, и могу ли я обойти это?

foxcub
источник

Ответы:

7

defaults write -g NSUserKeyEquivalents -dict-add "Select Previous Tab" "^\UF72C" "Previous Tab" "^\UF72C" "Previous Workspace" "^\UF72C" "Select Next Tab" "^\UF72D" "Next Tab" "^\UF72D" "Next Workspace" "^\UF72D"

-gмодифицирует ~/Library/Preferences/.GlobalPreferences.plist. Необходимо повторно открыть приложения, чтобы применить изменения, и добавленные вручную ярлыки не отображаются в ярлыках приложений .

LRI
источник
Прежде чем я попробую это, как бы я отменить это? Есть что-то вроде -dict-remove? (Кроме того, я хотел бы знать, как вы нашли это решение.)
foxcub
1
defaults delete -g NSUserKeyEquivalents, Вы также можете вручную отредактировать файл с: f=~/Library/Preferences/.GlobalPreferences.plist; plutil -convert xml1 $f; open $f. Я не узнал об этом нигде конкретно.
Lri
Я думаю, что коды клавиш неверны. Он пытается установить все, чтобы быть Ctrl + PageUp. Где я могу найти эти коды?
foxcub
Извините, исправил это. lri.me/chars
Lri
Принятие этого ответа, так как это более прямой подход к моему вопросу. (Извините, что я не могу это высказать - недостаточно репутации.)
foxcub
3

Вы можете использовать iTerm, поскольку в нем гораздо более гибкая система ярлыков, но вы неизбежно встретите другое приложение, которое работает не так, как вы хотите.

Я думаю, вы обнаружите, что Command+ shift+ [и Command+ shift+ ]являются единственными последовательными сочетаниями клавиш для переключения между вкладками, и лучше просто изменить свои привычки.

Джаред О'Коннор
источник
Есть ли способ изменить ярлык Chrome для переключения вкладок на тот же? (Думаю, я знаю, как это сделать для MVim.) Я в порядке, меняя свои привычки, но мне нужна последовательность.
foxcub
Chrome уже использует эти ярлыки, как и MacVim и все другие приложения, которые я использовал, кроме Adium.
Джаред О'Коннор
Shift-Command-Left / Right Arrow также переключают вкладки в терминале. Кроме того, в Mac OS X Lion 10.7 жест «пролистывание тремя пальцами» переключает вкладки (если у вас не настроено системное предпочтение использовать пролистывание тремя пальцами для чего-то другого).
Крис Пейдж
Обратите внимание, что для людей с (многими) неанглийскими раскладками клавиатуры любые сочетания клавиш, например [] {}, сложно набрать. Вот почему я лично предпочитаю сочетания клавиш, которые не зависят от раскладки клавиатуры. Как PageUp и PageDown.
tml
3

Ответ Лри работает (и FWIW, я проголосовал за него), но использует немного дробовика: он создает глобальные настройки (вместо настроек, специфичных для терминала), и некоторые из его настроек на самом деле вообще не влияют на терминал - - Я на самом деле не знаю, для чего они.

Если, как и я, вы немного параноик и предпочитаете более «хирургический» подход, вот модифицированная версия ответа Лри:

defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Select Previous Tab"    "^\UF72C"
defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Select Next Tab"        "^\UF72D"

Это добавляет только две комбинации клавиш ^PageUpи ^PageDownдобавляет их только в терминал.

Лоуренс Гонсалвес
источник
Любая идея, если это все еще должно работать (в Эль-Капитане)? Это не работает для меня, к сожалению.
Крис
@ Крис Похоже, ты прав. Это больше не похоже на работу! С одной стороны, элементы меню изменили имена (теперь они говорят «Показать» вместо «Выбрать»), но даже исправление этого параметра, похоже, не имеет никакого эффекта. На самом деле я не могу заставить NSUserKeyEquivalents работать на Терминал вообще в Эль-Капитане. Тьфу
Лоуренс Гонсалвес
1

Основываясь на этом ответе, вот версия этого для macOS High Sierra:

defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Show Next Tab" "^\UF72D"
defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Show Previous Tab" "^\UF72C"
Даниэль Мадли
источник
Подтвердили, что это работает на Мохаве, хотя этот ответ кажется дубликатом ответа Лоуренса Гонсалвеса . Кроме того, PSA: не забудьте перезапустить Терминал после запуска.
RACKGNOME