Hack #67: Gitを使う
Posted at 2009/09/04ツイート
Vimの中でGitを快適に使うためのプラグインがいつくかあります。 その中からmotemenさん作のgit-vim.vimを紹介します。
インストール
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>gCで
git 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