vim-gitgutter ——【一天一个 vim 插件】

screenshot.png
在此截图你可以看见:

  • 183-184 行是新建的;
  • 186-187 行有所变动;
  • 在底部的预览区中显示改动情况(hp)。

(出处)airblade/vim-gitgutter

在 vim 标志栏(sign column,行号左边的一列,通常为隐藏状态)中显示 git diff(git 差异)

这个系列主要以记住各类有用的 vim 插件的功能与使用方法为目的。

安装配置

安装插件的方法,一般分为常规安装与插件管理器安装。常规安装将插件整个放入目录:

1
~/.vim/pack/vendor/start

而插件管理器安装有相似的语法,却各不相同。插件管理器安装有一定的性能亏损,但是如果有大量插件存在的情况下,没有插件管理器,将难以管理。

系列目前选择 junegunn/vim-plug 插件管理器作为插件的安装方式。全程使用xterm-256color,没有使用gui

.vimrc 中写入并保存:

1
2
3
4
5
6
7
8
9
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
au VimEnter * PlugInstall --sync | source $MYVIMRC
endif

call plug#begin('~/.vim/plugged')
Plug 'airblade/vim-gitgutter'
call plug#end()

重新用 Vim 打开一个文件,执行命令::PlugInstall,好了 vim-plug 插件管理器 和 vim-gitgutter 插件都安装好了。

标志栏背景颜色显示很丑的话,我的默认显示灰色,添加如下设置以改善:

1
highlight SignColumn ctermbg=NONE

当修改文件后,标志栏会自动刷新,而刷新的延迟决定于vim的updatetime,默认的是4000ms,建议修改如下:

1
updatetime=100

使用方法

通过 [c]c 在有所变动的区块间跳转。
hp,显示预览,hunk preview
hs,暂存代码块,hunk stage
hu,撤销更改,hunk undo

以上是默认的映射,可以自行修改如下:

1
2
3
4
5
nmap ]h <Plug>(GitGutterNextHunk)
nmap [h <Plug>(GitGutterPrevHunk)
nmap <leader>hp <Plug>(GitGutterPreviewHunk)
nmap <leader>hs <Plug>(GitGutterStageHunk)
nmap <leader>hu <Plug>(GitGutterUndoHunk)

You can explicitly turn vim-gitgutter off and on (defaults to on):

如果在某个git项目下,不想看见这个标志栏的提示,可以使用下面的命令:

1
2
3
4
5
:GitGutterDisable
:GitGutterEnable

:GitGutterBufferDisable
:GitGutterBufferEnable

绑定快捷键,例如:

1
2
nmap <leader>hd :GitGutterDisable<CR>
nmap <leader>he :GitGutterEnable<CR>