vim-users.jp

Hack #67: Gitを使う

Posted at 2009/09/04
このエントリーをはてなブックマークに追加

Vimの中でGitを快適に使うためのプラグインがいつくかあります。 その中からmotemenさん作のgit-vim.vimを紹介します。

screenshot

インストール

git-vimをダウンロードし、配置します。

http://github.com/motemen/git-vim

あなたの<Leader>が何にmapされているか確認しましょう。 なにも設定した覚えがなければ、以後<Leader>\に読み替えてください。

使い方

以下のキーマッピングが定義されます。

  • <Leader>gd: git diff {編集中ファイル}
  • <Leader>gD: git diff --cached {編集中ファイル}
  • <Leader>gs: git status {編集中ファイル}
  • <Leader>gl: git log {編集中ファイル}
  • <Leader>ga: git add {編集中ファイル}
  • <Leader>gA: git add {カーソル下にある文字列が指すファイル}
  • <Leader>gc: git commit {編集中ファイル}
  • <Leader>gp: git pull --rebase {編集中ファイル}

ただし出力結果は標準出力ではなく、Vim内の別ウインドウに表示されます。

議論

一般に、シェルでgit commitを行なうとその度にVimが立ち上がります。 Vimを起動するのに大変時間がかかるため、この作業は大きなストレスとなるため、多くのGitユーザはgit commit -m '{commit-message}'のように-mオプションをつけますが、やはりVim内でコミットメッセージを書いた方が補完やヤンクなどの面で便利です。 git-vimを用いた場合、現在起動中のVimの中の別ウインドウでコミットメッセージを編集するため、非常に高速かつ快適です。

応用編

著者は<Leader>を別のキーに割り当てたまま、git-vimのプレフィックスを<Space>キーに割り当てています。

他にも細かい微調整をしています。

  • ウインドウを開くときは右下に配置されるようにする
  • <Space>gd<Space>gDを逆転し、あまり使わない方を打鍵しにくいキーにする
  • <Space>gLで差分つきのログを表示する
  • <Space>gCgit commit --amendする (使用頻度高し)
  • <Space>gp<Enter>pullではなくpushにする。(確認のためあえて<Enter>の打鍵を要求している)

これらをまとめて、~/.vimrcファイルに以下の記述をしています。

let g:git_no_map_default = 1
let g:git_command_edit = 'rightbelow vnew'
nnoremap <Space>gd :<C-u>GitDiff --cached<Enter>
nnoremap <Space>gD :<C-u>GitDiff<Enter>
nnoremap <Space>gs :<C-u>GitStatus<Enter>
nnoremap <Space>gl :<C-u>GitLog<Enter>
nnoremap <Space>gL :<C-u>GitLog -u \| head -10000<Enter>
nnoremap <Space>ga :<C-u>GitAdd<Enter>
nnoremap <Space>gA :<C-u>GitAdd <cfile><Enter>
nnoremap <Space>gc :<C-u>GitCommit<Enter>
nnoremap <Space>gC :<C-u>GitCommit --amend<Enter>
nnoremap <Space>gp :<C-u>Git push
ujihisa

もどる
blog comments powered by Disqus