vim環境をあらためて整理してみる#2
2022年9月18日前回、vim環境をあらためて整理してみる#1 で、前振りだけになりましたが、vim環境整理のため、docker で、almalinux9 を準備。
基本的に、Dockerは、docker-compose.yml と Dockerfile で組むのですが、手っ取り早く Dockerhub のイメージで流用します。(説明上)
よほどのことがない限り、dockerの環境は DockerfileとDockerhub, githubで管理して、Docker自体は使い捨てますが、構築手順や内部のデータ(DBなど)は、永続化して再利用できる形を取ってます。
何かと環境が異なるインフラを構築したい場合には、便利なので。
では、Dockerでalmalinux9 を立ち上げちゃいましょう。
Dockerの環境構築や、その他利用方法は省略します。
また、vimはできるだけ最新版を利用して、パッケージ関連を活用しているので、Homebrewで最新版をインストールします。
Mac環境の場合は、macbrewで読み替えてくださいね。
Almalinux9のDocker起動
docker pull almalinux9:latest
あとは、利用しているdockerクライアントから起動しちゃいましょう。
.vimrcなどの、ドットファイルをgithubからclone
実施してる方も多いと思いますが、ドットファイルはgithubで管理できていると楽です。
特に、vimはプラグインを追加しがちで、.vimrcがカオスになることも多かったり、プラグイン管理ようのツールを変更する場合も多い。
私も以前、Pathogenから dein に乗り換えた時、この恩恵をかなり受けました。
オフライン環境であれば、ダウンロードしたzipファイルを展開すればいいし、オンライン環境ならばgithubから簡単に同期が取れますからね!
dropboxで管理されている方も居るようですが。そこは、お好みで。
最終的に、ソースを全てgithubと自宅サーバで管理しているので、なんだかんだで・・古くから愛用してます。
githubのリポジトリは、Privateなので、ざっくり管理方法だけご紹介。
ドットファイルのgithub管理
前述したように、色んなOSを使っているので、リポジトリは OSとShell で分けてます。
- linux(bash)
- mac(zsh)
と、行った具合です。
githubから、ドットファイルをclone
今回は、Linuxなので、こんな感じでリポジトリから、各種ファイルをcloneします。
mkdir ~/dotfiles
git clone git@github.com:<<user>>/<<repos>>.git . # ドットファイルリポジトリ
cd ~/dotfiles
sh makeSymlinks.sh # .vimrcなどのパスをSymLinkで張り替え
環境ごとに、管理しているドットファイルをバックアップしつつ、シンボリックリンクを張り替えてます。
ファイルの実態は、~/dotfiles にあるので、OSが異なったり、Shellを変更した場合は、リポジトリを切り替えてます。
必要パッケージのインストール
あとは、必要なLinux側のパッケージを入れていくのですが・・・
普段はDockerfileで、パッケージも指定しているので、基本 一度でもdockerで利用したOSは、必要なパッケージを準備したものが、各タグで管理しているので、ほぼサクっと環境が整います。
インストールパッケージをメンテだけしていけば良いのが、やはり大きなメリットですね。
ざっくりと抜粋。
dnf clean all
rm -r /var/cache/dnf
dnf -y upgrade
# dnf-plugins
dnf -y install dnf-plugins-core
dnf -y install epel-release
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf -y install --enablerepo=epel,remi wget curl git --allowerasing
dnf -y install --enablerepo=epel,remi vim git htop glances tmux
dnf -y install net-tools # ifconfig
dnf -y install bind-utils # for dig
dnf -y install telnet sudo zsh openssl-devel perl-ExtUtils-MakeMaker curl file
dnf -y groupinstall 'Development Tools'
dnf -y install nodejs ctags
一部、自身がよく使うパッケージも入れてるので、必要に応じてお好みで。
Linuxbrewをセットアップ
インストールが一通り終わったら、vim をHomebrew からインストールします。
実際、この作業も Dockerfileで作ってるので、普段は実行しませんが。。。
こんな感じです。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)" && \ echo 'export PATH=${HOME}/.linuxbrew/bin:$PATH' >> .bash_profile
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
vimをインストール
さ、vimをインストールしましょう。
brew install vim
インストールが終わったら、確認。
vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jun 13 2022 00:00:00)
問題なさそうです。
では、いよいよ。
deinによるパッケージ更新
.dein.toml などは、ドットファイルで管理していて、シンボリックリンクを作成済み。
vimを開くだけで、プラグインをインストールしてあげればOK。
※実際、この手順までは全て Dockerのイメージを作成済みなので、いつも作業はここからです。
vim
:call dein#install()
これで、deinで管理している、vimプラグインが全てインストール完了。
さらに、
:call coc#util/Install()
dnfのパッケージでも入れてるのですが、nodejs, ctag, yarn もプラグインで使ってるので、ここで準備します。
vim環境
実際、いつも使っている Dockerのイメージは、CentOS, Almalinux, Ubuntu, AmazonLinux と数種ありますが、セットアップとして自身の環境設定は、いつも最後の数コマンドだけで完了します。
OSやミドルウェアのパッケージをセットアップする場合は、また別のdockerイメージを利用しますが。
いつもの慣れた環境で作業を行いたい場合、やはり 私にとって vim環境・設定・プラグイン が同じであることは結構な作業の違いが出てきます。
都度、ワンライナーで設定してもいいのですが、プラグインはそうも行かず。
プラグインがなくても、充分戦闘力があるエディタが、vimです。(emacsも同様だと思います)
コンソールを触る機会がある方で、ガジェット好きな方は .vimrc にこだわる傾向があるような気がしてます。
逆に、新しい技術に関心がない方は、こういったことができること自体も、やはり関心がないので、知らない方が多いように思います。
たかがコマンドであったり、エディタですが。
ショートカットや、設定の有無で大化けするのが linuxやvimのようなエディタ。
OS自体にも便利なショートカットも多いですし、できれば暇な時にでもチャレンジしてほしい内容だなぁ〜と思ってます。
さてと。
次回は、ちょっと整理して、久しぶりに .vimrc でも晒してみようかと思います。
取り急ぎ、全OS分は整理が間に合わないので・・・ たぶん、Mac版になると思いますが。