tmux+Vimが不安定なら、いっそMacVimを使おう

最近tmux+VimをやめてMac版GVimである[MacVim](https://code.google.com/p/macvim/)を使うようになりました。

MacVimへ移行した理由
====================

これまでMacVimを敬遠してきました。というのも

- ターミナル上で動くのがVimのいいところだと思う
- tmux上でVimとシェルを行き来するのに慣れてしまった（tmuxから出たくない）
- 改めて設定するのが面倒くさかった

からなのですが、最近は

- tmux上のVimの描画がおかしくなることが多い
  - いちいち`:redraw!`を実行するのがつらい（キーバインドを実行するのすら面倒）
- tmux用のエスケープキーが惜しい

という感じであまり上手く行っていませんでした。そこで先日から重い腰を上げてMacVimを試しに使っています。で、その結果としては

- 体感でターミナル上よりさくさく動く(tmuxのオーバーヘッドが無いから？)
- tmuxのpane切り替えを、OS Xのアプリケーション切り替えに変えるだけ
- tmuxのステータスラインが無くなった分、使える画面領域が若干増えた
- 改めて設定することはほとんど無かった
- tmux用のエスケープキーが開放された（私の場合は`Ctrl-J`)
- 色の細かい制御ができるようになった

のでこのままMacVimに移行しようと決心しました。MacVimいいよ

MacVimに行った設定
==================

MacVimを使う上で行った設定は下記3つ

1. ターミナルから新しいタブを開いてファイルを編集する
2. 文字サイズを設定する
3. 挿入モードを抜けるときに自動的に英数入力に切り換える

ターミナルから新しいタブを開いてファイルを編集する
--------------------------------------------------

基本的にファイルはVimから直接（[unite.vim](https://github.com/Shougo/unite.vim)とか使って）開くけど、ターミナルからファイルを選択することもあります。
その場合、既にMacVimが立ち上がっているなら、新しいウィンドウを作るのではなく、既存のものに新しいタブを作って開いて欲しい、と思いました。
で探してみるとMacVimの `[Preferences] -> [General] -> [Open files from applications]` に `[in the current window] -> [with a tab for each file]` という設定があったのでそれを選択。
そして、ターミナルから開くために下記を.zshrcに追記しました。

```sh:.zshrc
case ${OSTYPE} in
darwin*) # Mac OS X
  function macvim () {
    if [ -d /Applications/MacVim.app ]
    then
      [ ! -f $1 ] && touch $1
      open -a MacVim $1
    else
      vim $1
    fi
  }
  alias vim='macvim'
  ;;
esac
```

これでzsh上で`% vim path/to/file`とやればMacVim上の新しいタブでファイルを開くことができます。

ちなみに`gvim`コマンドだと上手くいきませんでした。

文字サイズを設定する
--------------------

MacVimのデフォルトの文字サイズがやたらと小さいのでそれを指定します。フォントにはRictyを使うようにしました。
ホームディレクトリに.gvimrcファイルを置いとけばMacVimが勝手に読んでくれます。

```vim:~/.gvimrc
set guifont=Ricty:h16
```

`h16`というのが文字の大きさです。Google先生に聞いた限り、フォントを指定せずに大きさだけを変更することはできない気配がします。

挿入モードを抜けるときに自動的に英数入力に切り換える
----------------------------------------------------

挿入モードで日本語入力をしていて、ノーマルモードに`CTRL-[`などで抜けたときに、自動的に英数字入力に戻さないと死んでしまう病気にかかっているので、KeyRemap4MacBookに新しい設定を追加しました。

```xml:private.xml
<?xml version="1.0"?>
<root>
  <appdef>
    <appname>MACVIM</appname>
    <equal>org.vim.MacVim</equal>
  </appdef>
  <list>
    <item>
      <name>Leave InsMode with EISUU(MacVim)</name>
      <identifier>private.app_macvim_esc_with_eisuu</identifier>
      <only>MACVIM</only>
      <autogen>
        --KeyToKey--
        KeyCode::ESCAPE,
        KeyCode::ESCAPE, KeyCode::JIS_EISUU
      </autogen>
      <autogen>
        --KeyToKey--
        KeyCode::C, VK_CONTROL,
        KeyCode::C, VK_CONTROL, KeyCode::JIS_EISUU
      </autogen>
      <autogen>
        --KeyToKey--
        KeyCode::BRACKET_LEFT, VK_CONTROL,
        KeyCode::BRACKET_LEFT, VK_CONTROL, KeyCode::JIS_EISUU
      </autogen>
    </item>
  </list>
</root>
```

KeyRemap4MacBookの設定の仕方は[この記事参照](http://qiita.com/items/b5f0e49d68469eb38c1b)

MacVimにしてよかったその他のこと
================================

tmux用のエスケープキーバインドが開放された
------------------------------------------

最初にも書いたようにtmux用のエスケープキーに使っていた`CTRL-J`が開放されました。
なので個人的に使用頻度の高い[vim-easymotion](https://github.com/Lokaltog/vim-easymotion)に割り当てました。

```vim:.vimrc
NeoBundle 'Lokaltog/vim-easymotion'
let g:EasyMotion_mapping_j = '<C-j>'
let g:EasyMotion_mapping_k = '<C-k>'
```

これを設定してから、これまでほとんど使って来なかった`i_CTRL-O`が神機能に昇格しました。

色の表現力が上がった
--------------------

例えば[vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides)の`g:indent_guides_color_change_percent`オプションなどはiTerm2上にいた頃は上手く機能させられていなかったのですが、MacVimに来たら何もしなくてもきちんと描画のされ方が区別されるようになりました。
やったー

まとめ
======

MacVim意外といいよ！