暇人じゃない

Mac の Vim を MacVim-KaoriYa から MacVim に切り替えた
VimMac

最近は Vim でコードを書くことがなくなり、RubyMine や Visual Studio Code を使うことが多いが、ちょっとしたファイルの内容を確認する時に Vim を使うことがある。

昔から Mac で Vim を使うために MacVim-KaoriYa のお世話になっていたのだが、 2018 年頃からメンテナンスが止まっており、Big Sur にアップデートしたあたりから GVim でカーソルを移動したり、スクロールすると描画が壊れるようになった。

Old MacVim

さすがにこのまま使い続けることは難しいので MacVim に切り替えることにした。

元々 MacVim-KaoriYa は、この MacVim をベースに香り屋さんのパッチを当てて日本語化したもの。 本家の Vim を使っていた時に日本語周りで困った記憶がないので、MacVim も問題ないでしょ、という魂胆。 リリースの頻度は活発ではないが、本家 Vim から master ブランチへのバックポートは頻繁に行われている印象。

MacVim の Homebrew パッケージは Core 版Cask 版 があるが、ダウンロード数が多い Core 版を選択。

切り替え

やることは大まかに以下。

  1. /ApplicationsMacVim.app を削除。ゴミ箱に入れるだけ
  2. brew install macvim を実行して MacVim をインストール
  3. 環境に応じてシェルの設定を変更

少しハマった点としては、/ApplicationsMacVim.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 変数に渡すように変更。 また、/ApplicationsMacVim.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 を触った感想

New MacVim

MacVim に切り替えてからは GVim で描画が壊れる現象は発生しなくなった。

少し Vim を触ってみたが、サクサク動くのでストレスが少ないと感じた。RubyMine はタブを切り替えるのももっさりだからなぁ。キーボードから手を離さなくていいのも良い。 しかし RubyMine のような環境を作るのは大変そう...

細かいキーバインドを忘れていたのでなんとなく悲しい気持ちになる。 CtrlP が動かなくなっていたりするけど、最低限は動くようにメンテナンスしておこう。(追記: CtrlP が動くようにした)

余談: vim, mvim, gvim コマンドの違い

全部同じ。gvim, vimmvim のシンボリックリンクになっている。

% 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

About

chocoby (GitHub / Twitter)

個人事業主のソフトウェア開発者です。 Ruby と Rails を使った Web サービスの開発を得意としています。

CurryBu というサービスを作ったり、jp_prefecture という Gem を作っています。