<Plug>
mappings are meant to be mapped and called via the map. A <Plug>
map is a device to expose a clean interface of plugin actions to the user.
Example: Instead of mapping some key to some plugin function in the plugin's hard code, such as "map zz
to the action 'center cursor aesthetically'":
nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>'
it is better to expose only a named <Plug>
mapping from the plugin:
nnoremap <expr> <Plug>NiceCenterCursor 'zz'.float2nr(winheight(0)*0.1).'<C-E>'
that the user can then remap in their config, without having to copy and paste the "action":
nmap zz <Plug>NiceCenterCursor
This is then easy to override, reuse, plug into by the user.
<Plug>
mappings are active only in the modes they have been defined for. To execute a <Plug>
mapping that is defined for normal mode, you can do as with any normal command: use :normal
(without the exclamation mark).
:execute "normal \<Plug>NiceCenterCursor"
Since <Plug>
actually represents a special magic key, we need to use :normal
together with :execute
and escape the <Plug>
.
The <Plug>
mechanism is described in depth at :h 41.11
. See also this article about this topic by a Vim master.