🍣
Vim 上での git 仕草
Vim 上で git を使う時のプラグインとかキーマップとかフローとか。
使用プラグイン
プラグインの設定
lambdalisue/gin.vim
" !git の動作に支障をきたすため環境変数 GIT_EDITOR の書き換えを禁止
let g:gin_proxy_disable_editor = v:true
キーマップ
nnoremap qt <Cmd>tabclose<CR>
: タブで開いたらこれで閉じる。
git status
-
nnoremap <Space>gs <Cmd>!git status -v<CR>
: -v で git add した内容を確認。 -
GinStatus へ変更。nnoremap <Space>gS <Cmd>GinaPreview<CR>
: kuuote/gina-preview.vim で画面分割表示
git add
-
nnoremap <Space>gai <Cmd>!git add --interactive<CR>
: ファイル単位での add はこちらを使う。 -
nnoremap <Space>gad :!git add --patch<Space>
: 変更箇所単位での add はこちらを使う。現在のバッファだけを対象にするなら % を入力して Enter。 e のときに編集をキャンセルするときは:cq
を使う。 -
nnoremap <Space>gaD <Cmd>GinPatch ++opener=tabnew %<CR>
: gin.vim で変更箇所単位での add など。変更箇所にさらに変更を加える場合により使いやすいかな。 -
nnoremap <Space>gu <Cmd>silent !git add --update<CR>
: 変更したファイルをすべて add。最近git commit --all -v
を使えばこれはいらなさそうと気づいた。 -
nnoremap <Space>gS <Cmd>GinStatus<CR>
: コミットに含める変更を選択
git commit
-
nnoremap <Space>gn :!git commit --all -v -m ""<Left>
: 一行コミットメッセージですべての変更をコミット。-m ""
を削除して詳細にコミットメッセージを書く時ように-v
も入れているけど、やっぱりいらないかな。 -
nnoremap <Space>gN <Cmd>!git commit --all -v<CR>
: 詳細にコミットメッセージを書く時はこちら。 -
nnoremap <Space>gc <Cmd>!git commit -v<CR>
:git add
が終わったらこちら。 -
nnoremap <Space>gam <Cmd>!git commit --amend<CR>
:git add
後に直前のコミットへ混ぜる。
git push
nnoremap <Space>gp :!git push origin @
git diff
-
nnoremap <Space>gd <Cmd>!git diff<CR>
:git add
前に変更箇所確認。 -
nnoremap <Space>gD <Cmd>GinDiff ++opener=tabnew<CR>
: たくさん変更していたらバッファ上で確認をするためにこっちを使うことも。
others
-
nnoremap <Space>gbc :!git switch -c<Space>
: ブランチ作成。 -
nnoremap <Space>gbo * :GinEdit ++opener=vsplit %<Left><Left>
: 過去のコミットやブランチのファイルを表示。コミットハッシュやブランチ名を入力する位置に <Left> でカーソル移動。 -
nnoremap <Space>gl <Cmd>GinLog ++opener=tabnew --all --graph --max-count=100 --oneline --decorate<CR>
: ログとグラフを一行表示。 -
nnoremap <Space>gL <Cmd>GinLog --all --patch --graph --max-count=100<CR>
: ログとグラフと差分を表示。 -
nnoremap <Space>gg :Gina log -p -G""<Left>
: 正規表現が変更に含まれるコミットを表示。 -
nnoremap <Space>gbl <Cmd>Gina blame<CR>
: インタラクティブなgit blame
。
master に間違ってコミットした時に対処
-
nnoremap <Space>gbr :!git branch -m temp
: 現在のブランチ名を仮名に変更。 -
nnoremap <Space>g- :!git switch -c master HEAD~<Left><Left><Left><Left><Left><Left>
: 起点にするコミットにブランチ作成。 -
nnoremap <Space>gr :!git restore --source=temp .
:restore
後にgit commit -p
で部分的にadd
してcommit
。 -
nnoremap <Space>gbd :!git branch -D temp
: 仮名のブランチを削除。
フロー
編集 → [add →] commit
Discussion