6.11. Привязка команд к клавишам

Проблема

Некоторые команды Vim слишком длинны и сложны. Вы создали собственную коллекцию пользовательских команд и теперь хотели бы назначить комбинации клавиш для их вызова.

Решение

Команда map связывает нажатия клавиш с произвольной командой или текстовой строкой в нормальном режиме; команда map! определяет нажатия клавиш для режима вставки. Чтобы просмотреть текущие назначения, введите команду :map или :map! без параметров.

ВНИМАНИЕ

Будьте осторожны при создании собственных привязок — не используйте клавиши, с которыми в Vim уже связаны операции, поскольку команда map выполнит ваше требование и заменит их, не предупреждая. Именно поэтому сначала стоит как следует освоить Vim, а уже потом приступать к экспериментам с привязкой.

Новая привязка создается командой вида:

:map <F3> :runtime! syntax/2html.vim<CR>

Эта команда включает теги HTML в текущий документ в новом окне. Для её активации будет использоваться клавиша F3.

Удаление привязок осуществляется командой вида:

:unmap <F3>

Имена клавиш, таких как Esc, <CR> (Enter) и функциональные клавиши F2–F12, записываются в специальной форме, потому что при простом нажатии клавиша выполнит привязанную к ней команду.

В следующем примере с клавишей F3 связывается команда, которая включает режим вставки, заключает слово между тегами HTML и выходит из режима вставки, позволяя вам продолжить печать:

:map <F3> i<B><Esc>ea</B><Esc>a

Вот несколько примеров привязок в режиме вставки для быстрого добавления HTML-тегов. Они работают быстро, поскольку выполняются без выхода из режима вставки. Маловероятно, что такие комбинации запятых с буквами встретятся в обычном тексте:

:map! ,ah <a href=""></a>
:map! ,b <B><Esc>ea</B><Esc>a
:map! ,i <I><Esc>ea</I><Esc>a
:map! ,li <LI><Esc>ea</LI><Esc>a

Комментарий

Самыми безопасными для привязки являются клавиши F2–F12 и Shift+F2–F12. Однако эти комбинации быстро заканчиваются на практике. Использование комбинаций вроде «запятая + буква», которые редко встречаются в обычных текстах, позволяет создать столько привязок, сколько нужно.

Полная информация о встроенных привязках Vim выводится командой:

:help map-which-keys

Также можно запросить справку по конкретной клавише или комбинации:

:help CTRL-V
:help F5
:help /b

Помните, что названия клавиш, такие как CTRL и F5, должны быть записаны текстом; не нажимайте их на клавиатуре напрямую при запросе справки.

См. также

Справочная система Vim (:help 2html.vim, :help key-mapping).