Я только что открыл для себя чудеса set -o vi
, и мне любопытно, можно ли настроить этот режим оболочки vi так же, как настраивать vi или vim?
Например, создайте пользовательскую привязку ключа для сопоставления более удобной комбинации клавиш или esc
?
Если это в настоящее время не поддерживается, насколько сложно будет изменить исходный код программы и жесткий код в некоторых настройках, или это будет плохой идеей?
Ответы:
Да, вы можете изменить сопоставления клавиш (для режима, подобного vi или emacs) с помощью
bind
встроенной функции. На самом деле это функция readline (так что вы можете иметь vi-подобные привязки во всех программах readline, а не только в bash).Ключ, который вы ищете, называется
vi-movement-mode
и по умолчанию\e
(escape). Вы могли бы дополнительно связать это (и это довольно глупо) равными вот так. Вторая строка избавляется от привязки к escape:Запуск
bind -p
покажет вам все ключи, которые вы можете связать, и их текущие привязки (если есть).Вы можете помещать
bind
команды в свои.bashrc
или редактировать,~/.inputrc
чтобы они применялись ко всем программам readline, которые вы запускаете. Документы readline содержат полную информацию.источник
bind "Control-Space":vi-movement-mode
- это прекрасно работает. Но, например, в vim я набираю два символа подряд в качестве триггераesc
, т. Е. Если вы введете текст,jj
вы вернетесь в нормальный режим. Это не сработало, когда я попробовал это с bind, есть ли особый способ заставить это работать?@
), иначе он не получит уведомление.bind '"jk":vi-movement-mode'