Пользовательские сочетания клавиш для режима оболочки vi, например, «set -o vi»?

Пользовательские сочетания клавиш для режима оболочки vi, например, «set -o vi»?

Я только что открыл для себя чудеса set -o vi, и мне интересно, можно ли настроить этот режим оболочки vi таким же образом, как вы настраиваете vi или vim?

Например, создайте пользовательскую привязку клавиш, чтобы сопоставить более удобную клавишу или комбинацию клавиш с esc?

Если в настоящее время это не поддерживается, насколько сложно будет изменить исходный код программы и жестко закодировать некоторые настройки, или это будет плохой идеей?

решение1

Да, вы можете изменить сопоставления клавиш (для vi- или emacs-подобного режима) с помощью bindвстроенной функции. На самом деле это функция readline (так что вы можете иметь vi-подобные привязки во всех программах readline, а не только в bash).

Клавиша, которую вы ищете, называется vi-movement-mode, и по умолчанию она \e(escape). Вы можете дополнительно привязать ее к (и это довольно глупо) equals, как здесь. Вторая строка избавляется от привязки к escape:

$ bind "=":vi-movement-mode 
$ bind -r "\e"

Запуск bind -pпокажет вам все клавиши, которые вы можете привязать, и их текущие привязки (если таковые имеются).

Вы можете поместить bindкоманды в свой .bashrc, или вы можете отредактировать ~/.inputrcего, чтобы он применялся ко всем программам readline, которые вы запускаете. Документация readline содержит полную информацию.

Связанный контент