Vimで設定値やプラグインを手軽に検証するために、一時的な環境を用意する方法についてご紹介します。
今回は Docker を使ったコンテナでの検証環境を準備する方法を紹介します。
前提
検証環境ですから、下記を満たせることが前提となります。
- 簡単に作れる
- 簡単に破棄できる
- 使うごとにリセットできる
- 設定ファイルなどをインポートできる
VMwareやHyper-V、あるいは VirtualBox などで仮想環境を作るのも良いですが、ちょっと重すぎる感じはありますね。
そう考えると、コンテナ技術を利用するのがベストと言えます。
ちなみに、Windows/Linux/Mac のいずれでも利用可能です。
用意するVim検証環境の構成
ローカルで用意する各種ファイルの構成はこちらになります。
/vim-sandbox (このフォルダ名は何でも大丈夫) ├ --- .vimrc コンテナ内にコピーする vim の設定ファイル(1) └ --- vim/ コンテナのvim関連ファイルのディレクトリへコピーするファイル群(2)
コンテナ内で、vimに関連するファイルやフォルダは下記の構成をになります。
/root ├ --- .vimrc vim設定ファイル(1) └ --- .vim/ vim関連ファイルのディレクトリ(2)
上のファイル/フォルダは、番号がそれぞれ対応しています。
コンテナ構築の手順
Vim 検証環境1. ノーマル
あらかじめ用意する .vimrc はこれくらいシンプルなものでも十分です。
syntax enable
filetype plugin on
filetype indent on
set number
set nocompatible
set complete-=i
set wildmenu
set textwidth=80
set colorcolumn=+1
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
set laststatus=2
検証する目的にも寄りますが、.vimrc の設定値を細かく試したいといった目的であれば十分です。
好きなように設定値を予め、あるいはコンテナ起動後に追加して試します。
また、コンテナの設計図こと dockerfile はこちらになります。
FROM alpine:edge
RUN apk update && \
apk upgrade && \
apk add --no-cache \
curl \
gcc \
git \
linux-headers \
musl-dev\
vim \
neovim \
python-dev \
py-pip \
python3-dev \
py3-pip && \
rm -rf /var/cache/apk/*
ENV LANG="ja_JP.UTF-8" LANGUAGE="ja_JP:ja" LC_ALL="ja_JP.UTF-8"
RUN pip3 install --upgrade pip neovim pynvim && \
rm -rf /root/.cache
RUN mkdir /root/.vim
COPY .vimrc /root/.vimrc
WORKDIR /root
ENTRYPOINT ["vim"]
alpine linux をベースとしたシンプルな作りにしています。必要に応じて、パッケージやpythonモジュールなどを追加しても良いかも知れません。
この状態で、下記のコマンドによってdockerイメージをビルドします。
docker build -t vim-sandbox .
イメージの名前(タグ)は vim-sandbox と付与していますが、こちらも任意にどうぞ。
これでイメージが作成できます。下記の通り、300MBを大幅に超える点は注意です。
調子に乗ってたくさんコンテナを作ってしまうと、すぐに大きな容量を食うことになります。
あとは、最後に起動するコマンドはコチラです。
docker run -it --name vim-sandbox -v /c/vim-sandbox/vim:/root/.vim vim-sandbox
注意点は、「/c/vim-sandbox/vim」の部分です。
こちらは Windows を想定した場合のフルパスですが、Linux/Mac でも同じようにフルパスを記載する必要があります。相対パスはNGです。
- NG: ./vim
- OK: /home/vimmer/vim
ちなみに、docker-compose で構築することも考えましたが、ENTRYPOINTのあたりが面倒でした。コマンドでコンテナ起動した直後に思うように動いてくれない感じでした。
複数のコンテナを起動するなど複雑な作りではありませんから、上記のようなコマンドを alias 登録やバッチファイルを用意した方が簡単だと思います。
Vim を停止したらコンテナが停止します。再度利用する場合は、下記のコマンドです。
docker start -ia vim-sandbox
なお、検証が終わったら下記のコマンドで削除しましょう。
docker container rm
今回のような検証にしか使わない環境であれば、下記のコマンドでも良いでしょう。
docker container prune -f
必要なコンテナまで削除してしまわないように御注意ください。
Vim検証環境2. プラグイン
プラグインの検証をしたい場合は色々な方法がありますが、シンプルなプラグインマネージャーであるこちらを使うと簡単です。
こちらを使って、サンプルとして下記のプラグインをインストール・動作検証してみます。
あらかじめ用意する .vimrc は先に紹介した内容に加え、pluginの設定が加わっています。
syntax enable
filetype plugin on
filetype indent on
set number
set nocompatible
set complete-=i
set wildmenu
set textwidth=80
set colorcolumn=+1
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
set laststatus=2
call plug#begin()
Plug 'mattn/vim-sl'
call plug#end()
予めホスト側の vim ディレクトリ/フォルダに autoload/plug.vim をコチラからダウンロードして配置しておいても良いた方が確実です。
/vim-sandbox ├ --- .vimrc └ --- vim/ └ --- autoload/ └ --- plugin.vim ← https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
dockerfileを書き換えてコンテナ内で全て用意する方法もありますが、今回はホストのボリュームをマウントする前提としています。そのため、上記のように予め準備しておくものとします。
この状態でdockerイメージをビルドします。
docker build -t vim-sandbox .
あとは、最後に起動するコマンドはコチラです。
docker run -it --name vim-sandbox -v /c/vim-sandbox/vim:/root/.vim vim-sandbox
これで起動したら、プラグインをインストールします。
:PlugInstall
ここまで完了すれば、プラグインの動作を確認できます。
なお、.vimrc を書き換え、:source .vimrc して、再度 :PlugInstall コマンドを繰り返せば、コンテナを起動した状態のままでプラグインのインストール/アンインストールを行うことも可能です。
リポジトリ
Docker Hub に登録していますので、そのまま利用可能です。
docker run -it --name vim-sandbox -v /c/vim-sandbox/vim:/root/.vim vimtry/vim-sandbox
上記一発で使えるのは便利ですね!
ちなみに、ソースコードはこちらにアップロードしていますので、ご利用ください。
大抵の検証はこちらで済むはずです。
OSコマンドが必要になった場合は、:terminal コマンドを上手く活用しましょう。
Vim力をもっと上げるには?
これらの書籍はバイブルです。必ず完読しましょう。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。