Есть ли способ добавить сочетание клавиш для команды терминала в OSX. В основном, в большинстве случаев я открываю терминальное приложение в MAC, чтобы подключиться к определенному серверу foo. Я хочу добавить сочетание клавиш (скажем, ^ k), чтобы на терминале, когда я это делал, в терминале запускалась "ssh foo".

Спасибо

PS: я думаю, что если в linux есть что-то для xterm, то это должно работать и для терминала. Так что это может быть не конкретный вопрос для OSX.

PS2: я хочу, чтобы ярлык делал возврат каретки с помощью "ssh foo". Если это просто "ssh foo", то я могу написать псевдоним в .bashrc. Моя цель - минимизировать количество нажатий клавиш в конце дня.

6 ответов6

3

Вы правы, это не специфический вопрос для OS X. Ответ можно найти в bash , стандартной оболочке OS X (также включенной в большинство, если не во все дистрибутивы Linux).

bash предоставляет встроенную команду bind которую можно использовать для привязки комбинации клавиш (например, Alt K) к команде (например, ssh foo).

Откройте терминал и введите:

bind '"\ek":"ssh foo\n"'

Это свяжет комбинацию клавиш \ek (в терминале Alt K и Esc K) с командой ssh foo . \n добавляет возврат .

Теперь нажмите Alt K и ssh foo будет выполнен (измените ssh foo в соответствии с вашими потребностями).

Если вы хотите, чтобы эта комбинация клавиш автоматически загружалась при запуске терминала, создайте файл с именем .inputrc в вашей домашней папке:

cd ~
touch .inputrc

и откройте его:

open -e ~/.inputrc

Вы увидите TextEdit открытым. Тип:

"\ek":"ssh foo\n"

и сохраните его (или используйте ваш любимый редактор). Это оно!

Это гораздо больше, чем я объяснил здесь. Я рекомендую вам взглянуть на этот вопрос: https://stackoverflow.com/questions/4200800/in-bash-how-do-i-bind-a-function-key-to-a-command и проверить ( довольно сухой) раздел READLINE в man bash . Обратите внимание, что escape-последовательность \M- , которая в других операционных системах сопоставлена с Alt , не работает в Terminal. Вы должны использовать \e чтобы связать Alt .

Поскольку escape-последовательности зависят от эмуляции терминала, я хотел бы поделиться настройкой, которую я использовал для проверки вышеуказанной команды:

0

Используйте iTerm2. У него есть возможность делать именно то, что вы хотите: определить профиль, который запускает определенную команду при запуске терминала, и назначить комбинацию клавиш этому профилю, чтобы при нажатии комбинации клавиш открывалась новая вкладка терминала ssh-ed на вашем сервере. ,

0

Вы можете использовать Alfred App для использования глобальных горячих клавиш для различных вещей в OS X.

Например: я определил глобальный ярлык для открытия приложения терминала и ssh'ing на определенный сервер. Этот ярлык будет работать даже тогда, когда приложение терминала еще не запущено.

Другое преимущество этого решения по сравнению с простым макросом внутри терминала заключается в том, что он автоматически подключается по ssh к вашему удаленному хосту и для новых вкладок, которые вы открываете.

0

Я не верю, что есть способ создать сочетание клавиш, но есть несколько вариантов.

  1. TextExpander позволяет вам набирать небольшой набор букв и заставить его «расширяться» до целого. Это может работать, не уверен, поддерживается ли он в терминале, но это может работать.

  2. Поскольку большую часть времени вы сначала запускаете эту команду в Терминале, вы можете перейти в «Терминал»> «Установки»> «Запуск» и установить желаемую команду «Shell Opens With». Затем, несколько раз, когда вы этого не хотите, просто выйдите из ssh ... намного проще, чем вводить команду.

0

Эти решения не идеальны, но могут помочь. У меня только русский интерфейс, так что вам придется самим определять конкретные названия опций.

Решение 1.

Терминал - Настройки - [Вторая вкладка] - Оболочка - Команда для запуска при запуске

Решение 2.

Терминал - Настройки - [Вторая вкладка] - Клавиатура, она позволит вам использовать специальные клавиши для запуска команд оболочки (не ctrl-k, хотя)

0

Я использую TextExpander именно для этой цели:Снимок экрана TextExpander

Макрос TextExpander:

ssh -l user -p 99999 void.example.com%key:return%
echo "some command"%key:return%

Настоятельно рекомендуется. К сожалению, это не бесплатно, и есть другие способы, но это работает хорошо.

Изменить: это соединение SSH использует ключевой файл, поэтому пароль не требуется.

Edit2: это выглядит как еще одно решение вашей проблемы: Terminitor

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