Open11
neogit を使ってみる
なんか最近開発が活発になっているっぽいから、使ってみたい。
Emacs の magit っていうプラグインを Neovim に移植したいっていうことかな?
magit 使ったこと無いからわかんないけど
デフォルトで、タブで開くようになっていて、
既に NeogitStatus のタブがあったらそのタブにジャンプしてくれる。 (これいいな! fugitive を使っていたときにこのような動作にしていたため、好感触)
んーーー他の git リポジトリのタブが開いているとその他部にジャンプしてしまう...
これじゃない...
A リポジトリのタブと B リポジトリのタブは区別したいな...
fugitive のときには以下の関数を用意して、それを呼び出していた
function! s:gstatus() abort
let l:path = fugitive#Find('.git/index')
let l:repo_path = fnamemodify(fugitive#repo().dir(), ':h')
let l:cur_path = expand('%:p')
if s:find_visible_file(l:path)
execute 'drop ' . l:path
execute 'edit!'
else
try
Gstatus
wincmd T
catch /.*/
echomsg v:errmsg
endtry
endif
" カーソル移動して、 diff を表示
if l:cur_path =~# '^' .. l:repo_path
call search(l:cur_path[len(l:repo_path)+1:] .. '$')
" " diff を表示
" normal >
endif
endfunction
function! s:find_visible_file(path) abort
for l:buf in getbufinfo({'buflisted': 1})
if l:buf.name ==# a:path && !empty(l:buf.windows)
return 1
endif
endfor
endfunction
neogit の使い方として、
-
:Neogit
でタブを開く。 - git の操作をする
- q でNeogitStatus を閉じる
みたいな感じ?
使い終わったら閉じていけば、必ず 1つの NeogitStatus のタブになるから使いやすいかもしれない。
意識してみよう。
一通りちょっと使ってみたい
$ ghq create neogit-sample
:Neogit
でメイン画面を開く
新しいブランチを作る
b
で branch popup を開く。
新しいブランチは c
で作成できるっぽい。
c
を押す。
sample を作る。
stage
stage は s
(stage)
diff の確認は <Tab>
で表示をトグルできる
unstageは u
(unstage)
visual モードで選択して、s
と u
が使えるの素晴らしい! (このために fugitive を入れていたくらいだから、めっちゃ便利)
commit
プレフィックスキーは c
(commit)
もう一回 c
を押すとコミットメッセージを入力するためのウィンドウが開く。
コミットメッセージを入力して、 :wq
する。
確認メッセージがでてくるから、y を押して完了。