Vim設定

DockerでVimの検証環境を作る方法

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. プラグイン

プラグインの検証をしたい場合は色々な方法がありますが、シンプルなプラグインマネージャーであるこちらを使うと簡単です。

junegunn/vim-plug
:hibiscus: Minimalist Vim Plugin Manager. Contribute to junegunn/vim-plug development by creating an account on GitHub.

こちらを使って、サンプルとして下記のプラグインをインストール・動作検証してみます。

mattn/vim-sl
SL. Contribute to mattn/vim-sl development by creating an account on GitHub.

あらかじめ用意する .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

ここまで完了すれば、プラグインの動作を確認できます。

Vimの検証環境(コンテナ):プラグイン向け

なお、.vimrc を書き換え、:source .vimrc して、再度 :PlugInstall コマンドを繰り返せば、コンテナを起動した状態のままでプラグインのインストール/アンインストールを行うことも可能です。

 リポジトリ

Docker Hub に登録していますので、そのまま利用可能です。

Docker Hub
docker run -it --name vim-sandbox -v /c/vim-sandbox/vim:/root/.vim vimtry/vim-sandbox

上記一発で使えるのは便利ですね!

ちなみに、ソースコードはこちらにアップロードしていますので、ご利用ください。

vimtry1/vim-sandbox
This docker container is a sandbox environment of vim or vim settings. - vimtry1/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力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。

プロフィール
管理人
Vim太郎

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

\フォローする/
\ シェアする /
\フォローする/
関連記事
Vim入門
タイトルとURLをコピーしました