Help us understand the problem. What is going on with this article?

はじめてのNeoVim(Git導入編)

More than 1 year has passed since last update.

前回はプラグイン管理まで書き、今回はStatusLineのColorScheme設定あたりをやろうかなと思ったのですが・・・
やっぱ設定ファイルゴリゴリいじってるとGit管理が欲しくなりますw
というわけで、自分でやったときとは順番前後しますがさきにGit対応します。

Gitで管理したいもの

ファイル名 用途
init.vim NeoVimの設定
dein.toml Vim起動時読み込みのPluginファイル
lazy.toml 実行時読み込みのPluginファイル

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

Vim上で画面分割

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

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を追加します。

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ができます。

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

:Gstatusで画面を開きます。

スクリーンショット 2019-07-31 22.08.19.png

Gstatus画面が結構優秀で各種キーマップが揃ってる。
詳しくはここ
この位置で-キーを押すと全部Stagedになります。

スクリーンショット 2019-07-31 22.10.23.png

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

スクリーンショット 2019-07-31 22.13.47.png

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

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

: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:のあとにコマンド打てばいいので、ターミナルを開ける必要がなくなりました!
これでとりあえず動作する状態の設定からブランチ切ってイジれるようになったので助かりました・・・w

ブックマーク

はじめてのNeoVim(初期設定編)

hisayuki
IT系ノマドワーカーです。主にWeb系だけどRuby未経験、PHPはあんま好きじゃない。メインはJVM言語、そろそろ他のやりたいなって思えてきてる。 最近使ってる: aws/terraform/spring/kotlin/Angular/Typescript/DDD/github/CICD 興味ある: serverless/自動化/gcp
https://hisa-tech.site
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away