我有一些针对Git的Vim映射。下面的大部分命令都可以工作,但是最后一个gm根本不起作用。我想打开一个新的Vim(最好已经加载了我的git提交消息模板,就像默认终端行为一样),编辑和保存我的消息,然后进行提交。
还有其他方法来解决这个问题吗?
" git shortcuts
"" show diff in new window
if has("gui_running")
noremap gd :!git diff <BAR> gvim -<CR><CR>
else
noremap gd :!git diff <BAR> vim -<CR><CR>
endif
noremap gs :!git status<CR>
noremap ga :!git add %<CR>
"" edit commit message in new window
if has("gui_running")
noremap gm :!gvim __vim_gitcommitmessage && git commit -F __vim_gitcommitmessage && rm __vim_gitcommitmessage<CR>
else
noremap gm :!vim __vim_gitcommitmessage && git commit -F __vim_gitcommitmessage && rm __vim_gitcommitmessage<CR>
endif
更新:
根据VonC的建议,我现在正在使用fugitive.vim。我替换了以前的Vim绑定,并且强烈推荐这个插件给任何使用Vim和Git的人。
" fugitive shortcuts
noremap ggs :Gstatus<cr>
noremap ggc :Gcommit<cr>
noremap gga :Gwrite<cr>
noremap ggl :Glog<cr>
noremap ggd :Gdiff<cr>