《友情推荐,欢迎大家关注》

vim-signify是基于Vim的标号列(sign column)功能实现文件差异高亮展示的Vim版本控制插件,同时支持主流的SVN、Git等版本控制协议。

其官方的介绍是 “uses the sign column to indicate added, modified and removed lines in a file that is managed by a version control system”,个人觉得signify的名字是由 signmodify 两个单词拼凑而成 (未考证)。

1. Vim标号 (sign column)

对于大多数源码编辑器来说,有时候需要通过某些特定的高亮显示以给用户一些关于文件有用信息的反馈。例如,在某个位置显示一个断点图标,或用一个箭头代表调试代码时程序当前执行的代码行。下图展示了Windows下visual studio设置断点后的界面显示情况。

Vim与上述功能相对应的特性称之为 Vim sign column,中文直译为 “Vim标号列”。如果在Vim默认配置文件 ~/.virc 中定义了标号,Vim 会自动增加两个字符宽度的纵列来显示该标号。当删除所有Vim标号后,该列会自动消失。’signcolumn’ 选项可改变此行为。

Vim标号列的颜色由 SignColumn,一个设定Vim标号列颜色的配置示例为: :highlight SignColumn guibg=darkgrey

vim-signify便是基于Vim标号列和vimdiff相关功能特性开发的一个Vim版本控制插件。

2. vim-signify安装方法

有多种方法可以安装Vim插件。Vim教程网(https://vimjc.com)推荐使用Vim插件管理器vundlevim-plug安装。

若使用vundle安装vim插件vim-signify,需要在 ~/.vimrc 中添加 Plugin 'mhinz/vim-signify' 后执行 :PluginInstall 命令进行安装。

若使用vim-plug安装Vim插件vim-signify,需要在 ~/.vimrc 中添加 Plug 'mhinz/vim-signify' 后执行 :PlugInstall 命令进行安装。

3. vim-signify插件配置

vim-signify插件的具体配置和说明可通过Vim命令行帮助命令 :h signify 查看详细介绍。

当使用Vim打开一个新的文件缓冲区后,vim-signify插件会被激活,通过主动尝试执行各种版本控制软件的diff命令 (如svn diff,git diff等)来探测当前文件是否被某个版本控制软件所管理,可以通过设置 g:signify_vcs_list 选项来指定版本控制软件的类别。

例如,let g:signify_vcs_list = ['git','svn']

g:signify_vcs_list 选项默认为空,可选值包括 'git''svn''hg''cvs''rcs''hg''tfs''yadm''perforce''accurev'等。

vim-signify插件基本原理的官方介绍为:When you open a new buffer, signify registers it as active and asynchronously tries all the diff subcommands of all the VCS tools that are supported and executable. It’s recommended to set g:signify_vcs_list to limit the VCS to test for.

vim-signify默认的标号整理如下:

标号 含义
+ 当前行是新增的内容 (This line was added)
! 当前行已被修改 (This line was modified)
_n 当前行下有 n 行被删除了,如果 n > 9,则不会显示 _,如果 n > 99,则使用 _> 代替 (因为只显示2个字符宽度)
!1 当前行已被修改,且下一行已被删除 (This line was modified and a number of lines below were deleted)
!> 当前行已被修改,且下面被删除的行数大于9

g:signify_sign_add 选项详细介绍了不同标号的含义和使用方法。

除此之外,:SignifyEnable 选项用于启用signify (Enable the plugin for the current buffer only);:SignifyToggle 用于切换signify的开启关闭状态 (Toggle the plugin for the current buffer only);:SignifyToggleHighlight 用于切换signify的高亮显示开关。

关于vim-signify的配置介绍,推荐阅读官方文档https://github.com/mhinz/vim-signify/blob/master/doc/signify.txt 或本地帮助手册。

vim-signify

推荐阅读《Vim中集成git操作的插件vim-fugitive安装与命令介绍》。

《女程序员说》

原创不易,希望能给小女子的公众号加个关注~