поведение ctrl-o в Terminal.app

16

Я часто использую ярлык + Oв bash (из «Изучение оболочки bash» ):

[G] вернитесь к [команде в истории] и нажмите + Oвместо . Это выполнит команду и вызовет следующую команду в файле истории. Нажмите + еще Oраз, чтобы ввести эту команду и вызвать следующую.

Кажется, этот ярлык недоступен в OS X; + Oпросто ничего не делает. Поиск в сети выдает предложение использовать !встроенную bash , но я не вижу, как я могу добиться того же, что и + Oс ним.

Можно ли как-то получить + Oповедение в Terminal.app на OS X?

Майк Мазур
источник

Ответы:

19

+ Oпо какой-то причине (вероятно, связано с тем, что он используется для управления потоком данных в некоторых типах последовательных соединений), должен быть отвергнут драйвером терминала (т. е. не Terminal.app, а частью ОС между ним и ракушка). Вы можете избавиться от этого с помощью команды stty discard undef. Чтобы сделать это изменение постоянным, добавьте эту команду в свои файлы .bash_profile и .bashrc .

Гордон Дэвиссон
источник
3

man bashможет помочь. «READLINE» и «Readline Key Bindings» говорят о привязке нажатий клавиш и о том, как установить значения по умолчанию для readline.

Кроме того, Bash Emacs Режим редактирования Шпаргалка и продуктивная работа в режиме редактирования командной строки Bash Vi (с Шпаргалкой) хороши для выяснения того, что делает нажатие клавиш, что если вы используете режим vi вместо стандартного emacs. В любом случае bind -P | grep foundпокажет вам, какие комбинации клавиш настроены в режиме vi, и bind -Pпокажет все доступное.

Greg
источник
2
Ух ты, я понятия не имел, что в bash доступен vi-режим! Это за пределами сладкого. Благодарность!
Майк Мазур
2
Я чувствовал то же самое, когда я обнаружил, что это было доступно.
Грег
я тоже я тоже :)
Роберт С Чаччо