Как настроить привязки клавиш vim вне vim (например: терминал)? - PullRequest
0 голосов
/ 10 февраля 2020

В моем редакторе vim я переназначил некоторые действия, поскольку мне не нравятся их привязки по умолчанию. (Например, я использую Ctrl h / l для go до начала / конца строки вместо 0 / $, так как прежние привязки намного проще в использовании.)

Я также использую vim привязка в моем терминале (bash и tmux) и некоторые команды, такие как "less", также используют привязки vim. Моя настройка там не работает, поэтому мне нужно запомнить свои настройки, а также привязки клавиш по умолчанию, что довольно неудобно.

Как настроить привязки клавиш вне vim (например, в bash , tmux и меньше)?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Хотя многие утилиты утверждают, что реализуют привязки клавиш Vim и / или Emacs, в действительности они не задействуют Vim или Emacs в реализации. Я не знаю об Emacs, но Vim не предлагает какой-либо универсальной библиотеки управления ключами, поэтому не было бы возможности использовать Vim из другой программы, даже если бы захотел.

Tmux и Менее оба имеют свои собственные совершенно уникальные c системы управления ключами. Они оба хорошо документированы. Как только вы определите нужные вам привязки, вы можете сохранить их в файлах конфигурации. (.tmux.conf и .less соответственно. .less на самом деле является двоичным файлом, созданным lesskey; .tmux.conf является текстовым файлом.)

Bash использует библиотеку Readline, которая библиотека общего назначения, а также используется многими консольными приложениями. Вы можете настроить все (или, по крайней мере, большинство) утилит на основе readline, используя один файл конфигурации. (Обычно .inputrc.)

Указанные выше файлы конфигурации находятся в вашем домашнем каталоге. Большинство утилит также обращаются (или прибегают к ним) к общесистемному конфигурационному файлу с аналогичным именем в каталоге /etc. Часто утилиты имеют аргументы командной строки, которые позволяют вам использовать другой файл конфигурации; это полезно для отладки.

Для действительно подробной информации вы, вероятно, найдете соответствующие man-страницы уже в вашей системе. Таким образом, вы можете попробовать, например,

man bash
man less
man lesskey
man readline
man tmux

Также должны быть info страницы для Bash и Readline, которые могут быть более удобными для навигации. Не все дистрибутивы устанавливают файлы документации по умолчанию; вам может потребоваться установить связанный пакет doc. Например, в Ubuntu и Debian вам понадобятся пакеты bash-doc и readline-doc.

0 голосов
/ 10 февраля 2020

Для приложений, использующих readline, вы можете настроить их привязки клавиш в ~ / .inputr c.

set keymap vi-insert
set keymap vi-command
"\C-h": beginning-of-line
"\C-l": end-of-line
# Line navigation in insert mode.
bind -m vi-insert "\C-h":beginning-of-line
bind -m vi-insert "\C-l":end-of-line
# Line navigation in command mode (after hitting ESC).
bind -m vi-command "\C-h":beginning-of-line
bind -m vi-command "\C-l":end-of-line

Перезагрузите ваш файл inputr c, запустив bind -f ~/.inputrc

Теперь вы можете использовать Ctrl + h и Ctrl + l, чтобы перейти к началу или концу строки соответственно .

Эта ссылка содержит все команды readline, которые вы можете использовать в вашем отображении: https://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...