Open11

neogit を使ってみる

たまたまごたまたまご

neogit

なんか最近開発が活発になっているっぽいから、使ってみたい。

Emacs の magit っていうプラグインを Neovim に移植したいっていうことかな?
magit 使ったこと無いからわかんないけど

たまたまごたまたまご
:Neogit

で現在の git リポジトリの NeogitStatus 画面が開く。

キーバインディングは README にのっている。

たまたまごたまたまご

デフォルトで、タブで開くようになっていて、
既に 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 の使い方として、

  1. :Neogit でタブを開く。
  2. git の操作をする
  3. q でNeogitStatus を閉じる
    みたいな感じ?

使い終わったら閉じていけば、必ず 1つの NeogitStatus のタブになるから使いやすいかもしれない。
意識してみよう。

たまたまごたまたまご

一通りちょっと使ってみたい

$ ghq  create neogit-sample
たまたまごたまたまご

新しいブランチを作る

b で branch popup を開く。

新しいブランチは c で作成できるっぽい。
c を押す。

sample を作る。

たまたまごたまたまご

stage

stage は s (stage)
diff の確認は <Tab> で表示をトグルできる
unstageは u (unstage)

visual モードで選択して、su が使えるの素晴らしい! (このために fugitive を入れていたくらいだから、めっちゃ便利)

たまたまごたまたまご

commit

プレフィックスキーは c (commit)

もう一回 c を押すとコミットメッセージを入力するためのウィンドウが開く。

コミットメッセージを入力して、 :wq する。
確認メッセージがでてくるから、y を押して完了。