自动突出显示已更改的文本部分

时间:2014-05-14 07:30:47

标签: vim text-editor

在VIM中是否可以突出显示用户在文件中添加/更改的某些文本的部分内容?

以下情况证明了这一点:

  1. 用户已打开文件
  2. 用户进行了一些更改,然后:w
  3. 应突出显示1和2之间的所有差异
  4. 用户进行了一些更改,然后:w
  5. 应突出显示1和4之间的所有差异
  6. 等等。

    我正在寻找一个最紧凑的解决方案 - 它应该是一个选项还是一个简单的vim脚本。

4 个答案:

答案 0 :(得分:1)

如果您正在编辑的文件是Git存储库的一部分,则VIM插件vim-gitgutter将指示已添加/删除/更改的行。这可能符合您的需求。

答案 1 :(得分:1)

Vim会跟踪并维护一个撤消历史记录,记录对文件所做的所有更改。您可以使用像“sjl/gundo.vim”这样的插件,它可以让您查看文件后续更改的差异(非常方便)。

如果你把文件保存在vcs下,比如git,你也可以看到差异。对于git你应该使用'tpope/vim-fugitive'然后你可以用几种不同的方式查看差异,最常见的是:Gdiff

答案 2 :(得分:1)

对于此类差异报告,最好使用修订控制系统。然后,您问题中的数字会干净地映射到修订号,并且确实有插件可以显示这些差异(也可以跨多个修订,以及日志消息等形式)。

vcscommand.vim - CVS/SVN/SVK/git/hg/bzr integration plugin支持所有广泛使用的系统,并以临时缓冲区中的 vimdiff 或统一差异的形式提供此功能。还有插件(vim-signify - Advanced plugin for showing VCS diffs in the SignColumn或GitGutter for Git)可以在符号列中整齐地显示它。

如果您不能/不能使用版本控制系统,则会有插件显示已保存版本的差异(但不会跨保存,因为此信息为不可用)。

如果您想要一个可以执行此操作的轻量级,仅限Vim的版本控制系统解决方案,请查看我的writebackup pluginwritebackupVersionControl plugin插件,它们也提供vimdiffs /统一差异,而不需要基础修订控制系统。

答案 3 :(得分:1)

您可以保留原始文件的备份,然后:vsplit file.bak,在两个缓冲区中执行:diffthis