我最近發現了一個名爲<Plug>
的vim插件。例如,我想執行一個命令<Plug>abc_def
。在vim中執行<Plug>命令
我試過像:<Plug>abc_def
和類似的東西。沒有工作。而:help <Plug>
沒有提供任何信息。
但是,我已經能夠通過創建映射:map x <Plug>(unite_redraw)
來執行它。然後我可以按x
執行它。
現在,有沒有辦法執行:<Plug>abc_def
而不創建一個虛擬映射只是爲了運行它?我使用的實際插件是Unite。
我最近發現了一個名爲<Plug>
的vim插件。例如,我想執行一個命令<Plug>abc_def
。在vim中執行<Plug>命令
我試過像:<Plug>abc_def
和類似的東西。沒有工作。而:help <Plug>
沒有提供任何信息。
但是,我已經能夠通過創建映射:map x <Plug>(unite_redraw)
來執行它。然後我可以按x
執行它。
現在,有沒有辦法執行:<Plug>abc_def
而不創建一個虛擬映射只是爲了運行它?我使用的實際插件是Unite。
<Plug>
映射是意味着要映射並通過映射調用。 A <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>
實際上代表了一個特殊的法寶,我們需要與:execute
一起使用:normal
,逃離<Plug>
。
<Plug>
機制在:h 41.11
深度描述。另請參閱this article about this topic by a Vim master。
噢,所以'nmap'是'nmap'而不是'nnoremap'是非常重要的,因爲它會把'NiceCenterCursor'看作另一個映射。正確? – Tarrasch
@Tarrasch確切地說,地圖的右側必須重新映射才能正常工作。與':normal'相同:使用(重新映射)':normal'而不是非重映射':normal!'是非常重要的。 – glts