user icon

MacVim で mvim シェルスクリプトを活用する

OS X で使える GUI 用 Vim には MacVim kaoriYa 版 があります。
dmg パッケージで配布されていて導入が手軽、かつ自動アップデータ等の機能もあり便利です。

KaoriYa 版に限らずこの MacVim には以前から mvim というシェルスクリプトが同梱されています。

https://github.com/splhack/macvim-kaoriya/wiki/Readme#コンソールからmacvimappを起動する

Terminal.appやiTerm.appからMacVim.app (GUI)を起動する場合は、mvimシェルスクリプトを使用します。
$ /Applications/MacVim.app/Contents/MacOS/mvim
GUIでvimdiffを起動するにはmvimdiffを使用します。
$ /Applications/MacVim.app/Contents/MacOS/mvimdiff file1 file2
/Applications/MacVim.app/Contents/MacOSにパスを通すと便利です。

これは MacVim を端末から様々な方法で起動する為のスクリプトで、上記のページでは GUI 起動のみ触れてありますが
他にも様々に用いることが出来ます。

:help mvim に記載されている通り、これは代表的な MacVim.app のインストール先を探索して
起動を試みるスクリプトです。

mvim として起動すると GUI での起動が行われますが、このスクリプトは自身が起動されたコマンドを見て
起動方法を替えるように書かれている為、これに symlink することで様々に起動することが出来ます。

# GUI mode, implies forking
case "$name" in m*|g*|rm*|rg*) gui=true ;; esac

# Restricted mode
case "$name" in r*) opts="$opts -Z";; esac

# vimdiff, view, and ex mode
case "$name" in
    *vimdiff)
        opts="$opts -dO"
        ;;
    *view)
        opts="$opts -R"
        ;;
    *ex)
        opts="$opts -e"
        ;;
esac

例えば mvimdiff a.file b.file とすると m prefix で GUI 起動の設定、vimdiff suffix で vimdiff 起動となる為
GUI で a.file-b.file 間の vimdiff が起動されます。

また、m を付けずに vim としてリンクし起動すると、端末内から MacVim を使用することも出来ます。MacVim kaoriya は
頻繁に更新される為、常に新しい、また GUI と統一したバージョンの Vim を使用出来るメリットがあります。

GUI 起動の prefix には g もある為、gentoo コマンドを作成して MacVim (GUI) を起動するなどといったことも可能です。

導入

mvim コマンド自体は下記に含まれています。

$ /Applications/MacVim.app/Contents/MacOS/mvim

:help mvim を見ると mvim スクリプトは /usr/local/bin に配置して使おうといった旨の記載がありますが、MacVim KaoriYa のページだと

/Applications/MacVim.app/Contents/MacOSにパスを通すと便利です。

と解説されており、こちらには symlinked な mvimdiff 等派生コマンドが既に配置されています。

❯ ll /Applications/MacVim.app/Contents/MacOS/
total 6264
-rwxr-xr-x  1 shun  staff   356K Dec  7 13:59 MacVim
-rwxr-xr-x  1 shun  staff   2.3M Dec  7 13:59 Vim
-r-xr-xr-x  1 shun  staff   373K Dec  7 13:59 ctags
-rwxr-xr-x  1 shun  staff   685B Dec  7 13:59 macvim-askpass
lrwxr-xr-x  1 shun  staff     4B Dec  8 15:37 mview -> mvim
-rwxr-xr-x  1 shun  staff   2.2K Dec  7 13:59 mvim
lrwxr-xr-x  1 shun  staff     4B Dec  8 15:37 mvimdiff -> mvim
lrwxr-xr-x  1 shun  staff     4B Dec  8 15:37 view -> mvim
lrwxr-xr-x  1 shun  staff     4B Dec  8 15:37 vimdiff -> mvim

好みの方法で使用するといいと思います。

mvim スクリプトのバージョンによっては 14 行目辺りにある VIM_APP_DIR の設定が適切でない場合があるので、
この場合は /usr/local/bin/ にでも再配置して環境に合った適切な値に設定して使用すると良さそうです。
dmg パッケージからインストールしているのであれば /Applications を設定すると動くかもしれません。

終わりに

この季節恒例の Advent Calendar、今年も盛り上がっているようです。


Facebooktwitterlinkedintumblrmail
名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)