🐳

Ubuntu でも最新のVimを使いたいなら、Dockerから拾えばいいでしょ

2023/09/13に公開

この記事は、Vim 駅伝 の 2023/09/13 の記事になります。

TL;DR

  • Docker Image の thinca/vim には Ubuntu ベースのイメージが有る
  • docker cp を使うと、コンテナの中のファイルをホストに持ってこれる

はじめに

私の手元には、10年前の VAIO Pro 10 と 6年前の ASUS X551C に Ubuntu が入っており、
前者はイベント運営でネットワーク機器に接続するのに、後者は自宅サーバに使用している。

残念ながら、どちらのPCもスペックが不足しているため、自前でビルドするような作業には向いていなく、最新のVim をビルドすることも、めんどうと言わざるを言えない。

それでも、denops.vimddc.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

特定のバージョンを使いたい場合、 latestvX.Y.ZZZZ に変えてください。
latest を指定しておくと、その時の最新のバージョンが取得できます。

ローカル(ホスト) に Vim をコピーする

Docker Image から、ファイルをコピーすることはできず、一度、コンテナを立ち上げる必要があります。

docker run --rm -it --name vim thinca/vim:latest-full-ubuntu

上のコマンドを実行すると、端末上に Vim が立ち上がります。
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 "$@"

起動スクリプトの要点は以下の通りです。

  1. Vim のインストール場所が普通じゃないため、 VIM にランタイムのインストール先を設定してます。
  2. +mzscheme のために LD_LIBRARY_PATH を設定してます。
  3. gvim を foreground で起動するために、 -f を設定してます。
  4. "$@" で引数をそのまま 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