はじめてのNeoVim（Git導入編）


[前回](https://qiita.com/hisayuki/items/99ea1b667de71e908891)はプラグイン管理まで書き、今回はStatusLineのColorScheme設定あたりをやろうかなと思ったのですが・・・
やっぱ設定ファイルゴリゴリいじってるとGit管理が欲しくなりますｗ
というわけで、自分でやったときとは順番前後しますがさきにGit対応します。

## Gitで管理したいもの
|ファイル名|用途|
|---|---|
|init.vim|NeoVimの設定|
|dein.toml|Vim起動時読み込みのPluginファイル|
|lazy.toml|実行時読み込みのPluginファイル|

保管場所はすべて`~/.config/nvim`の直下

## Vim上で画面分割

今回PluginでGit操作を行いますが、画面分割が発生します。
そのため分割された画面を移動するためのキーバインドを設定しておきます。

```vim:init.vim
" ------------------------------------------------------------
"  key bind
" ------------------------------------------------------------
" Normal Mode
cnoremap init :<C-u>edit $MYVIMRC<CR>                           " init.vim呼び出し
noremap <Space>s :source $MYVIMRC<CR>                           " init.vim読み込み
noremap <Space>w :<C-u>w<CR>                                    " ファイル保存
" ＜追加＞分割画面移動
noremap <silent><C-h> <C-w>h                                    
noremap <silent><C-j> <C-w>j                                                                                                                                                                                                                                                          
noremap <silent><C-k> <C-w>k                                                                              
noremap <silent><C-l> <C-w>l 

" Insert Mode
inoremap <silent> jj <ESC>:<C-u>w<CR> " InsertMode抜けて保存
" Insert mode movekey bind
inoremap <C-d> <BS>
inoremap <C-h> <Left>                                                                                                                 
inoremap <C-l> <Right>
inoremap <C-k> <Up>                          
inoremap <C-j> <Down>
```


## PlugInでVim操作

今回は`fugitive.vim`というPlugInを追加します。


```toml:dein.toml
# ------------------------------------                                    
# Git vim-fugitive                                     
# ------------------------------------                                    
[[plugins]]                                    
repo = 'tpope/vim-fugitive'
hook_add = '''                                    
    nnoremap <silent> gs :Gstatus<CR><C-w>T                                    
    nnoremap <silent> gps :Gpush<CR>                                    
    nnoremap <silent> gpl :Gpull<CR>                                    
'''    
```

なのでキーバインドはお好みで。
よく使うGstatusとpush、pullだけはバインドしました。
push、pullはGstatus画面のキーマップに無いので・・・
他にもよく使う機能はおいおいバインドすればいいかな。

あとは`:G`のあとにgitのコマンド打てば、gitで出来ることは何でも出来ます。

## Git管理開始

GithubでのリモートRepositoryはすでに作ってあること前提ですすめます。
管理したいファイルを開いてる状態で以下のコマンドを打つと、同じディレクトリ内に`.git`ができます。

```vim
:G init
:G remote add origin git@github.com:mori-hisayuki/neovim.git
```

`:Gstatus`で画面を開きます。

![スクリーンショット 2019-07-31 22.08.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33165/403c12c1-63c6-4798-30ca-fcdc5aba262f.png "スクリーンショット 2019-07-31 22.08.19.png")


Gstatus画面が結構優秀で各種キーマップが揃ってる。
詳しくは[ここ](https://github.com/tpope/vim-fugitive/blob/master/doc/fugitive.txt)で
この位置で`-`キーを押すと全部`Staged`になります。

![スクリーンショット 2019-07-31 22.10.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33165/76636378-39d4-a604-f6c2-3ea5dfe86e07.png "スクリーンショット 2019-07-31 22.10.23.png")

さらにStaged状態で`c`を2回押すと、commitメッセージ画面が表示されます。

![スクリーンショット 2019-07-31 22.13.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33165/d691d467-4058-48ad-4a20-9f068da14ce3.png "スクリーンショット 2019-07-31 22.13.47.png")

なのでInsertModeでメッセージを入力して`:wq`でcommit完了です。

pushはキーバインドしてますが、最初だけオプションつけないといけないので以下の方法で入力

```vim
:Gpush -u origin master  
```

これでとりあえずGithubで管理ができるようになりました。

## 2019/08/01 追加
### branch作成・切り替え
#### branchの作成
Gstatus画面にて`cb<sapace>`で`:G branch`とコマンドラインに表示されるので、`:G branch <branch名>`のように入力

#### branchの切り替え
Gstatus画面にて`co<sapace>`で`:G checkout`とコマンドラインに表示されるので、`:G checkout <branch名>`のように入力

### Git-flowの開始
Git-flowはすでに入ってること前提で以下のコマンドで開始

```
:G flow init
```


## まとめ
Gstatus画面がかなり優秀。
diffも取れるし、対象ファイルも開けるし、ほとんどやりたいことはGstatus画面で事足ります。
できないこともpushのようにコマンド化されてたり、それでもできなければ`G:`のあとにコマンド打てばいいので、ターミナルを開ける必要がなくなりました！
これでとりあえず動作する状態の設定からブランチ切ってイジれるようになったので助かりました・・・ｗ

## ブックマーク
[はじめてのNeoVim（初期設定編）](https://qiita.com/hisayuki/items/99ea1b667de71e908891)