Подтвердить что ты не робот

Выполнять команды <Plug> в vim

Недавно я нашел плагин vim, используя что-то под названием <Plug>. Например, есть команда <Plug>abc_def, которую я хотел бы выполнить.

Я пробовал все, как :<Plug>abc_def и тому подобное. Ничего не получилось. И :help <Plug> не дал никакой информации.

Однако я смог выполнить его, создав сопоставление :map x <Plug>(unite_redraw). Затем я могу выполнить его, нажав x.

Теперь, есть ли способ выполнить :<Plug>abc_def без создания фиктивного сопоставления только для его запуска? Фактический плагин, который я использую, - Unite.

4b9b3361

Ответ 1

<Plug> отображения должны отображаться и вызываться через карту. Карта <Plug> - это устройство, которое предоставляет пользователю доступ к чистому интерфейсу действий плагина.


Пример: Вместо того, чтобы отображать некоторый ключ для некоторой функции плагина в жестком коде плагина, например, "map zz для централизованного курсора действия",

nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>'

лучше всего отобразить только имя с именем <Plug>, которое пользователь может переназначить, без необходимости копировать и вставлять "действие".

nnoremap <expr> <Plug>NiceCenterCursor 'zz'.float2nr(winheight(0)*0.1).'<C-E>'
nmap zz <Plug>NiceCenterCursor

Затем это легко переопределить, повторно использовать, подключить к пользователю.


<Plug> отображения активны только в режимах, для которых они определены. Чтобы выполнить сопоставление <Plug>, которое определено для нормального режима, вы можете сделать так же, как с любой обычной командой: используйте :normal (без восклицательного знака).

:execute "normal \<Plug>NiceCenterCursor"

Так как <Plug> фактически представляет собой специальный магический ключ, нам нужно использовать :normal вместе с :execute и выйти из <Plug>.

Механизм <Plug> подробно описан в :h 41.11. См. Также эту статью об этой теме с помощью мастера Vim.