Користувацькі прив’язки клавіш для режиму оболонки vi, тобто "встановити -o vi"?


18

Я щойно відкрив чудеса set -o vi, і мені цікаво, чи можна налаштувати цей режим оболонки vi якимось тими ж способами, які ви можете налаштувати vi чи vim?

Наприклад, створити власну прив'язку клавіш для відображення більш зручного ключа або комбінації клавіш esc?

Якщо вона наразі не підтримується, наскільки складно було б змінити вихідний код програми та жорсткий код у деяких налаштуваннях, чи це буде поганою ідеєю?


Тут я знайшов відповідь < unix.stackexchange.com/questions/27699/remap-bash-vi-keys >
DinizBr

Відповіді:


17

Так, ви можете змінити відображення клавіш (для режиму, подібного до vi-або emacs) за допомогою bindвбудованого. Це насправді функція readline (тому ви можете мати vi-подібні прив'язки у всіх програмах readline, а не лише bash).

Ключ, який ви шукаєте, називається vi-movement-mode, а за замовчуванням \e(втеча). Ви можете додатково прив’язати його до (а це досить нерозумно), як це. Другий рядок позбавляється від прив’язки для втечі:

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

Біг bind -pпокаже вам усі ключі, які можна зв’язати, та їхні поточні прив’язки (якщо такі є).

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


1
Це круто. Дуже дякую. Я зміг зрозуміти, як пов’язати ключові комбо, як-от bind "Control-Space":vi-movement-mode- це добре працює. Але, наприклад, у vim, я вводить два символи підряд як тригер esc, тобто, якщо ви введете, jjви повернетесь у звичайний режим. Це не спрацювало, коли я спробував це з біндом, чи є особливий спосіб змусити його працювати?
Йона

@Jonah не те, що я знаю з-під руки, але я нещодавно не переглядав документи для перегляду
читань

@chishaku вам потрібно встановити префікс імені Йона на знак ( @), інакше він не отримає сповіщення.
дероберт

2
@Jonah Я просто намагався зробити те саме. Ви коли-небудь це розуміли?
чишаку

1
unix.stackexchange.com/questions/303282/… Вам потрібні цитати з якоїсь причиниbind '"jk":vi-movement-mode'
Hielke Walinga
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.