VimL:取消加载插件的功能

时间:2012-12-06 20:22:16

标签: vim vim-plugin

也许问题标题不太具体。所以让我解释一下:

this GitHub fork适用于numbertoggle Vim plugin。请检查我叉子的结构,了解我的意思。

我需要的是一种在加载后停用它的方法。换句话说,如果调用该函数,则将其从图表中完全删除。

在其他方面,换句话说。如果调用了插件,我会:call NumberToggleOff(),那么它将禁用它并充当Vim通常会起作用。

实现这一目标的好方法是什么?我尝试了几种方法,但都没有。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

通常可以通过

的周围自动命令来完成
augroup NumberToggle
    …
augroup END

并记住映射的{lhs}。要禁用它,请执行

let s:plugin_lhs=exists('g:NumberToggleTrigger') ? g:NumberToggleTrigger : '<C-n>'
let g:numbertoggle={}
function! g:numbertoggle.unload()
    augroup NumberToggle
        autocmd!
    augroup END
    augroup! NumberToggle
    execute 'nunmap' s:plugin_lhs
    delfunction NumberToggle
    delfunction UpdateMode
    delfunction FocusGained
    delfunction FocusLost
    delfunction InsertLeave
    delfunction InsertEnter
    unlet g:numbertoggle
    unlet g:loaded_numbertoggle
    unlet g:insertmode g:focus
    unlet s:plugin_lhs
endfunction
" Then do :call g:numbertoggle.unload()
" Loading is done by resourcing numbertoggle

如果不是使用一堆delfunction次调用,而是将所有函数名称转换为g:numbertoggle.toggleg:numbertoggle.update,...而只是离开unlet g:numbertoggle,那会好得多。< / p>

它完全取消了插件的效果,而不仅仅是禁用它。