Я использую Ctrl- ←и Ctrl- →в каждой системе Linux, на которой я работаю, но эти комбинации клавиш не работают в bash на моем Macbook Pro. Это работает Snow Leopard, и я использую встроенное приложение терминала.
Комбинации клавиш, кажется, не фиксируются чем-либо до или терминалом, потому что, если я перейду на один из моих серверов Linux, я могу использовать Ctrl- ←/, →чтобы перейти к следующему / предыдущему слову в командной строке. Однако, когда я пытаюсь использовать эту комбинацию клавиш в bash на моем Macbook, я просто получаю «C» для стрелки вправо и «D» для стрелки влево.
Любые идеи о том, как я могу заставить эти ключи работать в Darwin Bash?
Ответы:
OS X использует привязку ключей emacs по умолчанию. Это верно практически для каждого приложения на OS X, это довольно приятно. Это означает, что такие вещи, как Ca и Ce, являются началом / концом строки. Вы также получаете изящное обратное уничтожение слов с помощью M-backspace, а также kill-line с помощью Ck.
Это должно означать, что в вашем терминале forward / backward-word связаны с Mf и Mb соответственно (M = Meta = alt / option), однако это не так. На OS X forward / backword-word связаны с M- → и M- ← по умолчанию.
Вы можете изменить это поведение, изменив настройку библиотеки GNU Readline для вашей учетной записи. Это происходит в вашем
~/.inputrc
файле. Вы можете получить большой список связываемых команд,man readline
а также в онлайн-документации, как это здесь. ,Поэтому, чтобы ответить на ваш вопрос, вы хотите переназначить то, что Readline делает, когда видит, что C- → и C- ← делает то, что делает на вашем Linux-сервере.
Синтаксис
~/.inputrc
файла достаточно прост для того, что вы хотите сделать:key-sequence: action
.Это должно быть то, что вам нужно, чтобы получить желаемое поведение:
Вот еще одна страница с дополнительными полезными привязками.
(Возможно, вам не помешает скопировать / etc / inputrc из вашего Linux-бокса в OS X ~ / .inputrc)
источник
\e[1;5C
и\e[1;5D
для запускаforward-word
иbackward-word
.поставить в
~/.inputrc
следующие строки:источник
В наши дни кажется, что escape-последовательности, которые выводят Ctrl-Arrows в терминале, изменились. Вот что работает для меня на сегодняшний день (конец 2018 года):
"\e[1;5C": forward-word "\e[1;5D": backward-word
Примечание: вы всегда можете выяснить фактические escape-последовательности, набрав
cat -v
в Терминале и нажав Ctrl-Стрелка влево или Ctrl-Стрелка вправо. Вот пример вывода для моей собственной стрелки Ctrl-Left:^[[1;5C ^[[1;5C
Чтобы перевести на
.inputrc
жаргон, замените escape-знак^[
на\e
и вставьте результат в двойные кавычки.источник
Как упоминалось @ bhh1988, конфигурация Mission Control не позволяет клавишам Ctrl работать с клавишами со стрелками
bash
. Я не хотел мешать этим ярлыкам, поэтому вместо этого я использую клавишу Option (т.е. Alt). В настоящее время в Mojave используется немецкая клавиатура (не знаю, насколько это актуально), я вставил следующее,.inputrc
чтобы использовать Option-left-arrow и Option-right-arrow для перемещения между словами.источник
ОБНОВЛЕНИЕ Январь 2020
В новейших версиях OSX оболочкой по умолчанию является
zsh
. Поэтому магическое заклинание заставить ctrl-arrowleft и ctrl-arrowright работать должным образом заключается в следующем:(положи в свой
.zshrc
)источник