Ubuntu でも最新のVimを使いたいなら、Dockerから拾えばいいでしょ
この記事は、Vim 駅伝 の 2023/09/13 の記事になります。
TL;DR
- Docker Image の thinca/vim には Ubuntu ベースのイメージが有る
- docker cp を使うと、コンテナの中のファイルをホストに持ってこれる
はじめに
私の手元には、10年前の VAIO Pro 10 と 6年前の ASUS X551C に Ubuntu が入っており、
前者はイベント運営でネットワーク機器に接続するのに、後者は自宅サーバに使用している。
残念ながら、どちらのPCもスペックが不足しているため、自前でビルドするような作業には向いていなく、最新のVim をビルドすることも、めんどうと言わざるを言えない。
それでも、denops.vim や ddc.vim を使うためには、最新に近い Vim を用意する必要があるため、どうにかしたかった。
やろうとしたこと
deb パッケージのビルドは、すごくめんどくさい印象があり、checkinstall を使って、GHAを毎日回すことを考えました。
下準備をするために、参考になる良さげな Vim のビルドスクリプトを探して、 thinca/vim にたどり着きました。(元々知ってたけど、頭から抜けてました)
やったこと
Docker Imageを取得する
thinca/vim には、Alpine Linux と Ubuntu の両方のイメージがあり、それぞれ、素に近いイメージと、拡張がいっぱい入ってるイメージがあります。
今回は拡張マシマシが欲しかったので、 latest-full-ubuntu
タグを選びました。
docker pull thinca/vim:latest-full-ubuntu
特定のバージョンを使いたい場合、 latest
を vX.Y.ZZZZ
に変えてください。
latest
を指定しておくと、その時の最新のバージョンが取得できます。
ローカル(ホスト) に Vim をコピーする
Docker Image から、ファイルをコピーすることはできず、一度、コンテナを立ち上げる必要があります。
docker run --rm -it --name vim thinca/vim:latest-full-ubuntu
上のコマンドを実行すると、端末上に Vim が立ち上がります。
そして、別端末を立ち上げ、コピーを行います。
docker cp vim:/usr/local /opt/vim
mv /opt/vim/local/* /opt/vim/
rm -fr /opt/vim/local
Docker Image では、 /usr/local 以下にインストールされていますが、私は /opt/vim
にインストールしたかったため、上記コマンドにしました。
起動スクリプトを用意する
私は gvim を使いたかったため、以下を ~/bin/gvim
として保存しました。
#!/bin/bash
export VIM=/opt/vim/share/vim
export LD_LIBRARY_PATH=/opt/vim/lib:$LD_LIBRARY_PATH
/opt/vim/bin/gvim -f "$@"
起動スクリプトの要点は以下の通りです。
- Vim のインストール場所が普通じゃないため、
VIM
にランタイムのインストール先を設定してます。 - +mzscheme のために
LD_LIBRARY_PATH
を設定してます。 - gvim を foreground で起動するために、
-f
を設定してます。 -
"$@"
で引数をそのまま gvim に引き継げます。
デスクトップのショートカットとして、使いたい場合、以下を ~/.local/share/application/gvim.desktop として保存しました。
[Desktop Entry]
Name=GVim
TryExec=gvim
Exec=/home/raa0121/bin/gvim %F
Terminal=false
Type=Application
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec
には ~
を使わずにフルパスを入れました。
これを用意すると、デスクトップから起動できるようになります。
まとめ
上記を一度設定すると、 docker pull で最新版を取得し、ホスト側にコピーを行えば、いつでも最新版に更新できます。
これで、Ubuntu でも最新の Vim を追いかけられますね!
良い Vimmer ライフを!
Discussion