XVimでXcodeのエリア周りの操作もvimにする


## はじめに
XVimでXcodeのエリア等で使うショートカットもVimで使っているものにしようと思います

## XVim導入
導入法に関しては情報が点在しているため割愛します。

## 基本操作
普段自分が愛用しているキーバインドが全て揃っていてほぼ文句無しです。
モード, 移動, マーク, マクロ等
詳しくは公式ドキュメントに[一覧](https://github.com/XVimProject/XVim/blob/master/Documents/Users/FeatureList.md)があります。

## Xcode操作
Xcodeのエリア周りや実行等のショートカットをいつものVimのキーバインドと同様にするができます。
よく使いそうな例をあげておきます。

| コマンド                                    | 動作                                      |
|:--------------------------------------------|:------------------------------------------|
| :run                                        | Run                                       |
| :xcmenucmd Build                            | Build                                     |
| :xcmenucmd Clean                            | Clean                                     |
| :xccmd openQuickly                          | ファイル名入力してファイル開く            |
| :xhelp                                      | カーソル上の単語のドキュメントを開く      |
| :xcmenucmd Jump to Next Issue               | エラーへ飛ぶ(次)                          |
| :xcmenucmd Jump to Previous Issue           | エラーへ飛ぶ(前)                          |
| :xcmenucmd Fix Next Issue                   | エラー修正する(次)                        |
| :xcmenucmd Fix Previous Issue               | エラー修正する(前)                        |
| :xccmd selectNextTab                        | タブ移動(次)                              |
| :xccmd selectPreviousTab                    | タブ移動(前)                              |
| :ncounterpart                               | headerファイルと入れ替え                  |
| :xccmd toggleBreakpointAtCurrentLine        | ブレイクポイントのトグル                  |
| :xccmd commentAndUncommentCurrentLines      | コメントのトグル                          |
| :xccmd findSelectedTextInWorkspace          | カーソルの乗っている単語をgrep検索する    |
| :xccmd toggleNavigatorsVisibility           | ナビゲーションエリアの表示/非表示         |
| :xccmd toggleDebuggerVisibility             | デバッグエリアの表示/非表示               |
| :xccmd toggleToolbarShown                   | ツールバーの表示/非表示                   |
| :xccmd toggleUtilitiesVisibility            | ユーティリティエリアの表示/非表           |


## 設定ファイル
.vimrc同様、ホームに.xvimrcを置いて書きます
xcodeに特化した部分を晒しておきます(ほぼ上記の表のもの)

```.xvimrc
set incsearch
set hlsearch
nnoremap sn :xccmd selectNextTab<Cr>
nnoremap sp :xccmd selectPreviousTab<Cr>
nnoremap <C-o> :xccmd goBackInHistoryByCommand<Cr>
nnoremap <C-i> :xccmd goForwardInHistoryByCommand<Cr>
nnoremap <C-n> :xcmenucmd Jump to Next Issue<Cr>
nnoremap <C-p> :xcmenucmd Jump to Previous Issue<Cr>
nnoremap <C-N> :xcmenucmd Fix Next Issue<Cr>
nnoremap <C-P> :xcmenucmd Fix Previous Issue<Cr>
nnoremap <C-h> :xhelp<Cr>
nnoremap <C--><C--> :xccmd commentAndUncommentCurrentLines<Cr>
nnoremap <Space>r :run<CR>
nnoremap <Space>b :xcmenucmd Build<Cr>
nnoremap <Space>c :xcmenucmd Clean<Cr>
nnoremap <Space>e :xccmd openQuickly<Cr>
nnoremap <Space>a :ncounterpart<Cr>
nnoremap <Space><Space> :xccmd toggleBreakpointAtCurrentLine<Cr>
nnoremap <Space>F viw:xccmd findSelectedTextInWorkspace<Cr>
nnoremap <Space>h :xccmd toggleNavigatorsVisibility<Cr>
nnoremap <Space>j :xccmd toggleDebuggerVisibility<Cr>
nnoremap <Space>k :xccmd toggleToolbarShown<Cr>
nnoremap <Space>l :xccmd toggleUtilitiesVisibility<Cr>
nnoremap <Space>a :xccmd toggleToolbarShown<Cr>:xccmd toggleDebuggerVisibility<Cr>:xccmd toggleNavigatorsVisibility<Cr>:xccmd toggleUtilitiesVisibility<CR>
```

## 公式の提供コマンドの追加方法
[こちら](https://github.com/XVimProject/XVim/blob/master/Documents/Developers/MenuActionList.txt)で提供されているものを使う方法
- Title: 概要
- Action: xccmdを付けて実際に入力する

---
例:
Title:Show Standard Editor    Action:changeToStandardEditor:
Standard Editorを表示するコマンド
:xccmd changeToStandardEditor

---

## ショートカットがXcodeと競合した場合
Xcodeが優先されます。
Xcodeのデフォに合わせるよりVimの操作に合わせたいので
`Preferences > Key Bindings`よりショートカットを削除します

## 参考サイト
- XVim(公式): <https://github.com/XVimProject/XVim>
- XVimでのVim操作可能キー一覧(公式): <https://github.com/XVimProject/XVim/blob/master/Documents/Users/FeatureList.md>
- XVimコマンド一覧(公式): <https://github.com/XVimProject/XVim/blob/master/Documents/Developers/MenuActionList.txt>
- xvimrc参考: <https://github.com/dengcqw/XVim-config-file/blob/master/xvimrc>