Vim
fish
vim-plugins
vim-plug

fish shellからVimPlugにコマンド一発でプラグインをインストールできるようにする

More than 1 year has passed since last update.

最近やたらと環境再構築することがあって、それに伴いVimのプラグインインストールさせられるので、どうせならfish shellから思いついたプラグインを一発でインストールできるようにしちまえと考えた。

こんなふうに

vim-plug "dag/vim-fish"

使用環境

  • Manjaro Linux KDE Edition
  • Vim 8.0
  • Fish shell 2.6.0
  • vim-plug

.vimrcを編集

vim-plugにはtomlでプラグインを記述する機能は(多分)ないので、Plug '〜'の部分を抽出し、fish scriptからでも簡単に編集できるようにする。

~/.vimrc
" Plugins
call plug#begin('~/.vim/plugged')
source ~/.vimrc.plugins
call plug#end()
~/.vimrc.plugins
Plug 'Shougo/vimproc.vim', { 'do': 'make' }
Plug 'itchyny/lightline.vim'
Plug 'tomasr/molokai'
Plug 'rhysd/vim-operator-surround'
Plug 'kana/vim-operator-user'
Plug 'Shougo/deoplete.nvim'
Plug 'Shougo/denite.nvim'
Plug 'terryma/vim-multiple-cursors'
Plug 'dag/vim-fish'

なんか不具合あるかなと思っていたが、起動が気持ち重くなるぐらいで特に大丈夫な様子。

config.fishにfunctionを追加

引数なしの場合、そのままプラグインリストを編集するようにしてみた。

config.fish
function vim-plug-install
    grep "Plug '$argv'" ~/.vimrc.plugins > /dev/null; or echo "Plug '$argv'" >> ~/.vimrc.plugins
end

function vim-plug-uninstall
    grep -v -F "Plug '$argv'" ~/.vimrc.plugins | tee  ~/.vimrc.plugins >> /dev/null
end

function vim-plug
    if count $argv > /dev/null
        set flag 0
        for option in $argv
            switch "$option"
                case i install
                    set flag 0
                case un uninstall
                    set flag 1
                case \*
                    set plugs $option $plugs
            end
        end

        for plug in $plugs
            if test $flag -eq 1
                vim-plug-uninstall $plug
            else
                vim-plug-install $plug
            end
        end

        if test $flag -eq 1
            vim +":PlugClean" +:qa
        else
            vim +":PlugInstall" +:qa
        end

    else
        vim ~/.vimrc.plugins
    end
end

これでインストールとアンインストールが一発でできるようになった。具体的には

インストール時
1. .vimrc.pluginsPlug '〜'を追加
2. Vimを起動し:PlugInstallを実行して終了

アンインストール時
1. .vimrc.pluginsから該当のPlug '〜'を削除
2. Vimを起動し:PlugCleanを実行して終了(このときにユーザーの確認入力が必須だが、やろうと思えばyesで回避できるかも?)

という処理を行っている。

ちゃんと動くかはわからない。

vim-plug (in(stall)) "dag/vim-fish" "mhinz/vim-startify"
vim-plug un(install) "dag/vim-fish" "mhinz/vim-startify"