Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

:Unite neobundle でプラグインの有効無効をトグルする

$
0
0

プラグイン記述時に NeoBundle ではなく NeoBundleLazy を使えばプラグインの有効化を可能な限り遅延することができます。おそらく大体の人は、commands, insert, mapping, filetype...をトリガーにして、自動で有効化させるように設定していると思います。

例えば、こんな感じです。

~/.vimrc
" コマンド入力するか、マップで呼び出すまで遅延される
    NeoBundleLazy 'thinca/vim-quickrun', {
                \ 'autoload': { 'commands': ['Quickrun'],
                \               'mappings': ['<Plug>(quickrun)'] },
                \ }

一方、自動ではなく、手動で有効無効を切り替えたいときもあるかと思います。
その場合は、NeoBundleSourceとNeoBundleDisableを使います。

"" 有効化
    :NeoBundleSource unite.vim"" 無効化
    :NeoBundleDisable unite.vim"" 有効無効の確認
    :NeoBundleList

  # Shougo/neocomplete
    kana/vim-textobj-entire
    sickill/vim-monokai
  # osyo-manga/shabadou.vim
  # skammer/vim-css-color
    LeafCage/yankround.vim

:NeoBundleListしたときに行頭に#が付いているのが無効状態のプラグインです。

例えば、この中のskammer/vim-css-colorを有効化したい場合、コマンドラインで以下を入力すれば使えます。

    :NeoBundleSource vim-css-color

ただ、コマンドラインウインドウは補完が聞くとはいえ、手入力は面倒です。

本題:もっと有効無効の切り替えを簡単に

実は、Neobundleには、Uniteのsourceが付属しているので、:Unite neobundleすると、:NeoBundleListと全く同じものが一覧になってUniteウインドウに表示されます。

Screen Shot 2015-02-02 at 23.37.30.png

これを見て、そうかプラグインを有効化するには、#のやつをENTERすればいいんだなって思って押すと、残念なことに有効化じゃなくてプラグインのアップデートが始まります。

なんでこんな仕様なのかよく分かりませんが、直感的ではない気がするので、
これをアップデートではなく、有効無効のトグル動作にします。

NeoBundle 'Shougo/unite.vim'if neobundle#tap('unite.vim')function! neobundle#tapped.hooks.on_source(bundle)        "" source/neobundleでプラグインの有効無効を切り替えるlet neobundle_toggle = { 'is_selectable': 1 }

        function! neobundle_toggle.func(candidates)for candidate ina:candidates
                let bundle = candidate.action__bundle_name
                let cmd = neobundle#is_sourced(bundle) ?
                \ 'NeoBundleDisable ' : 'NeoBundleSource '
                exec cmd . bundle
            endforendfunctioncall unite#custom#action('neobundle','source', neobundle_toggle)call unite#custom#default_action('neobundle','source')endfunctionendif

これで、#の付いた行でENTERすれば、プラグインが有効化され、
逆にすでに有効化されていれば、無効化されるようになりました。

適当にマップして、すぐに開けるようにしておくといいと思います。

nnoremap<Space>up :<C-u>Unite neobundle<CR>

Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>