用来在 Vim 编辑器的 gutter 中展示 git diff。该插件会标识当前行的操作状态,包括添加(added)、修改(modified)和删除(removed)。
效果:
- 259 行,
~
表示当前行被修改了 - 262 行,
-
表示下面被删除了一行 - 269 行 - 282 行,
+
表示这些行为新增
- 逐行展示 git diff
- 异步运行 git diff
- 保证实时更新标识符(+/-/~)
- 修改的代码块之间可快速跳转
- 可分别对代码块执行 stage/undo/review 等操作
- 可与 index 或者其他 commits 之间进行 diff 操作
...
还有很多特点不想写了。。。
- 只支持 git,不支持其他版本管理工具。如果使用其他版本管理工具,建议修改为 git 管理 (大误,😂;使用其他工作做版本管理的小伙伴请使用 vim-signify。
建议使用 vim-plug 来管理该插件。
在安装之前,请先检查当前使用的 Vim 是否支持 signs 功能,检测方法为在打开的 Vim 中,在命令模式中输入:
:echo has('signs')
如果结果为 1
,表示当前版本支持 signs 功能;如果为 0,表示当前版本不支持,应该安装一个更高版本的 Vim 编辑器。
signs 功能主要用来在 Vim 的 gutter(vim column) 中标识当前的调试、版本 diff 等状态,这里不展开介绍,想要了解更多的请跳转 Vim documentation: sign
Vim 中的 updatetime 用来定义更新时间,默认为 4000ms;这样会使得文件在修改之后,diff sign 更新的特别慢,所以建议在 .vimrc
中将此选项的默认时间设置的小一点:
" set the default value of updatetime to 100ms
set updatetime=100
可以通过下面的命令切换 vim-gitgutter 的状态:
:GitGutterDisable " 禁用
:GitGutterEnable " 开启
:GitGutterToggle " 切换
可以通过下面的命令切换 signs 的状态:
:GitGutterSignsEnable " 开启
:GitGutterSignsDisable " 禁用
:GitGutterSignsToggle " 切换
上面的命令比较长,可以通过定义快捷键来映射上面的命令,例如:
" map <leader>ggd :GitGutterDisable " 禁用 vim-gitgutter
" map <leader>gge :GitGutterEnable " 开启 vim-gitgutter
map <leader>ggt :GitGutterToggle " 切换是否开启 vim-gitgutter
快捷键越多,我们需要记忆的东西就越多,会形成不必要的负担。因此这里推荐只配置一个 toggle 的快捷键。
为了保持 Vim 的优雅简洁,当一个文件的需改超过 500 处时,vim-gitgutter 会关闭 diff signs;当修改小于 500 处时再展示。如果要修改该配置的默认值,可通过如下配置:
let g:gitgutter_max_signs = 800
vim-gitgutter 会将每一处修改标记为一个 代码块对象,并且提供了跳转、预览、暂存和撤销的操作。vim-gitgutter 将这些代码块对象称为 hunks。
]c
跳转到下一个 hunks[c]
跳转到上一个 hunks
自定义快捷键:
nmap ]h <Plug>GitGutterNextHunk
nmap [h <Plug>GitGutterPrevHunk
<Leader>hs
暂存(stage)焦点所在的 hunk<leader>hu
撤销(undo)焦点所在的 hunk<leader>hp
预览(preview)焦点所在的 hunk
自定义快捷键的方式如下:
nmap <Leader>ha <Plug>GitGutterStageHunk
nmap <Leader>hr <Plug>GitGutterUndoHunk
nmap <Leader>hv <Plug>GitGutterPreviewHunk
除以上的特性和配置之外,vim-gitgutter 还提供了其他很多配置,具体请参考 vim-gitgutter#customition 部分。
作者自己比较喜欢功能最小化,即一个插件只要满足自己的需求即可,其他更高级酷炫的功能,对于自己来说可能帮助提升效率的空间不大,反而有可能会消耗更多的性能。作者感觉上面这些功能已经满足了作者对于 git diff 相关操作的需要,其他各种颜色配置、高亮和提示符更改已经超出了我对这些操作的需要,因此不再做更多的介绍。如果有需要,各位小伙伴可以自行阅读 vim-gitgutter 的 README 进行配置。
- GitHub
- Email: [email protected]