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

この記事は約8分で読めます。

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

検証する目的にも寄りますが、.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

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
Vim verification environment at apline linux. Contribute to vimtry1/vim-sandbox development by creating an account on GitHub.

大抵の検証はこちらで済むはずです。

OSコマンドが必要になった場合は、:terminal コマンドを上手く活用しましょう。

Vim力をもっと上げるには?

これらの書籍はバイブルです。必ず完読しましょう。

実践Vim 思考のスピードで編集しよう! (アスキー書籍) | Drew Neil, 新丈 径 | 工学 | Kindleストア | Amazon
AmazonでDrew Neil, 新丈 径の{ProductTitle}。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。

Vim/neovim関連の書籍で、もっとも評判が良い(気がする)書籍です。Vim基本動作に関するバイブルと読んでる人もいます。その高い評価は、Amazonのレビューを読んでも間違いありません。

 

Vimテクニックバイブル~作業効率をカイゼンする150の技 | Vimサポーターズ | 工学 | Kindleストア | Amazon
AmazonでVimサポーターズの{ProductTitle}。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。

こちらもVim関連の書籍で評価が高い書籍です。Vimを実践で使うノウハウが詰まっていますので、Vimmerなら一読する価値アリです。

 

Vim script テクニックバイブル ~Vim使いの魔法の杖 | Vim scriptサポーターズ |本 | 通販 | Amazon
AmazonでVim scriptサポーターズのVim script テクニックバイブル ~Vim使いの魔法の杖。アマゾンならポイント還元本が多数。Vim scriptサポーターズ作品ほか、お急ぎ便対象商品は当日お届けも可能。またVim script テクニックバイブル ~Vim使いの魔法の杖もアマゾン配送商品なら通常...

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊。Vim力を伸ばすなら、一度は読んでおくべきかも知れません。

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

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

Vim 一郎をフォローする
Vim設定
Vim 一郎をフォローする
スポンサーリンク
関連記事
Vim入門
タイトルとURLをコピーしました