J'ai récemment trouvé un plugin vim utilisant quelque chose appelé <Plug>
. Par exemple, il y a une commande <Plug>abc_def
Que je voudrais exécuter.
J'ai tout essayé comme :<Plug>abc_def
Et similaire. Rien n'a fonctionné. Et :help <Plug>
N'a donné aucune information.
Cependant, j'ai pu l'exécuter en créant un mappage :map x <Plug>(unite_redraw)
. Ensuite, je peux l'exécuter en appuyant sur x
.
Maintenant, existe-t-il un moyen d'exécuter :<Plug>abc_def
Sans créer un mappage factice juste pour l'exécuter? Le plugin que j'utilise est Unite.
Les mappages <Plug>
Sont signifiés à mapper et à appeler via la carte. Une carte <Plug>
Est un appareil permettant d'exposer une interface propre d'actions de plugin à l'utilisateur.
Exemple: Au lieu de mapper une clé à une fonction de plugin dans le code dur du plugin, comme "mapper zz
vers le centre d'action" curseur esthétique "",
nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>'
il est préférable d'exposer uniquement un mappage nommé <Plug>
que l'utilisateur peut ensuite remapper, sans avoir à copier et coller "l'action".
nnoremap <expr> <Plug>NiceCenterCursor 'zz'.float2nr(winheight(0)*0.1).'<C-E>'
nmap zz <Plug>NiceCenterCursor
Ceci est ensuite facile à remplacer, à réutiliser, à brancher par l'utilisateur.
Les mappages <Plug>
Ne sont actifs que dans les modes pour lesquels ils ont été définis. Pour exécuter un mappage <Plug>
Défini pour le mode normal, vous pouvez faire comme avec n'importe quelle commande normale: utilisez :normal
(Sans le point d'exclamation).
:execute "normal \<Plug>NiceCenterCursor"
Puisque <Plug>
Représente en fait une clé magique spéciale, nous devons utiliser :normal
Avec :execute
Et échapper au <Plug>
.
Le mécanisme <Plug>
Est décrit en détail à :h 41.11
. Voir aussi cet article sur ce sujet par un maître Vim .