Mac の Vim を MacVim-KaoriYa から MacVim に切り替えた
最近は Vim でコードを書くことがなくなり、RubyMine や Visual Studio Code を使うことが多いが、ちょっとしたファイルの内容を確認する時に Vim を使うことがある。
昔から Mac で Vim を使うために MacVim-KaoriYa のお世話になっていたのだが、 2018 年頃からメンテナンスが止まっており、Big Sur にアップデートしたあたりから GVim でカーソルを移動したり、スクロールすると描画が壊れるようになった。
さすがにこのまま使い続けることは難しいので MacVim に切り替えることにした。
元々 MacVim-KaoriYa は、この MacVim をベースに香り屋さんのパッチを当てて日本語化したもの。 本家の Vim を使っていた時に日本語周りで困った記憶がないので、MacVim も問題ないでしょ、という魂胆。 リリースの頻度は活発ではないが、本家 Vim から master ブランチへのバックポートは頻繁に行われている印象。
MacVim の Homebrew パッケージは Core 版 と Cask 版 があるが、ダウンロード数が多い Core 版を選択。
切り替え
やることは大まかに以下。
/Applications
のMacVim.app
を削除。ゴミ箱に入れるだけbrew install macvim
を実行して MacVim をインストール- 環境に応じてシェルの設定を変更
少しハマった点としては、/Applications
に MacVim.app
が追加されないので、ln -s $(brew --prefix macvim)/MacVim.app /Applications
を実行してシンボリックリンクを作成した。
しかし、Spotlight はシンボリックリンクを表示しないので、まだ試していないが以下の対応が必要そう。
シェル周りの設定を変更
自分の dotfiles で古い MacVim.app
を参照していた箇所があったので変更した。
.zshrc
から macOS の場合に vim
コマンドの alias を設定する処理を削除。これは Homebrew でインストールした /usr/local/bin/
以下の MacVim が優先されるので alias が不要になったから。
余談だが、$HOME/local/bin/vim
の存在をチェックしているのは、Linux で Vim をコンパイルして使っていたころの名残。最近はそんな機会がないのでそろそろ削除して良いかも。
diff --git a/.zshrc b/.zshrc
index a914db3..5da7162 100644
--- a/.zshrc
+++ b/.zshrc
@@ -80,8 +80,6 @@ alias p='popd'
# vim
if [[ -s "$HOME/local/bin/vim" ]]; then
alias vim="$HOME/local/bin/vim"
-elif [[ -s "/Applications/MacVim.app/Contents/MacOS/Vim" ]]; then
- alias vim="/Applications/MacVim.app/Contents/MacOS/Vim"
fi
# tmux
scripts/setup_vim.sh
は Vim 環境をセットアップするためのスクリプト。
make install
を実行すれば dotfiles をセットアップできるような Makefile を書いているのだが、その中で呼ばれる。
macOS の場合は vim
コマンドが正しく指定されていることを前提にそのまま VIM
変数に渡すように変更。
また、/Applications
に MacVim.app
のシンボリックリンクを作成する処理を追加。
diff --git a/scripts/setup_vim.sh b/scripts/setup_vim.sh
index 6241328..3c9a2b6 100755
--- a/scripts/setup_vim.sh
+++ b/scripts/setup_vim.sh
@@ -3,7 +3,8 @@
cd $(dirname "$0")
if [ "$(uname)" == 'Darwin' ]; then
- VIM=/Applications/MacVim.app/Contents/MacOS/Vim
+ VIM=vim
+ ln -s $(brew --prefix macvim)/MacVim.app /Applications
elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
VIM=$HOME/local/bin/vim
ちなみに setup_vim.sh
の後半で vim-plug
を使用してプラグインのインストール/アップデートを行っている。
$VIM +PlugUpgrade +PlugUpdate +PlugClean! +qall > /dev/null
久しぶりに Vim を触った感想
MacVim に切り替えてからは GVim で描画が壊れる現象は発生しなくなった。
少し Vim を触ってみたが、サクサク動くのでストレスが少ないと感じた。RubyMine はタブを切り替えるのももっさりだからなぁ。キーボードから手を離さなくていいのも良い。 しかし RubyMine のような環境を作るのは大変そう...
細かいキーバインドを忘れていたのでなんとなく悲しい気持ちになる。 CtrlP が動かなくなっていたりするけど、最低限は動くようにメンテナンスしておこう。(追記: CtrlP が動くようにした)
余談: vim
, mvim
, gvim
コマンドの違い
全部同じ。gvim
, vim
は mvim
のシンボリックリンクになっている。
% ls -no /usr/local/opt/macvim/bin
total 0
lrwxr-xr-x 1 501 4 Apr 1 17:32 gview@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 gvim@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 gvimdiff@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 gvimex@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 mview@ -> mvim
lrwxr-xr-x 1 501 31 Apr 1 17:32 mvim@ -> ../MacVim.app/Contents/bin/mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 mvimdiff@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 mvimex@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 vi@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 view@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 vim@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 vimdiff@ -> mvim
lrwxr-xr-x 1 501 4 Apr 1 17:32 vimex@ -> mvim