vim-diff-enhanced


Ⅰ. 插件描述

Better Diff options for Vim

Ⅱ. 基本信息

创建日期:  2015-02-25
使用用户:  225
Github星:  328
插件作者:  Christian Brabandt

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'chrisbra/vim-diff-enhanced'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'chrisbra/vim-diff-enhanced'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'chrisbra/vim-diff-enhanced'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/chrisbra/vim-diff-enhanced

Ⅳ. 文档说明

# EnhancedDiff plugin Say Thanks!

A Vim plugin for creating better diffs (sometimes)

This plugin allows you to make use of the Patience diff algorithm for
generating diffs to use with Vim. This needs the git command line tool

  1. (But see Update below)

You can also customize your setup to use any other tool to generated diffs
(e.g. mercurial) Read the help on how to configure the plugin accordingly.

Here are some screenshots that visualize how the patience/histogram algorithm
work.

This is the default diff generated by Vim:
Default diff

Now change that to using the "histogram" algorithm by running :EnhancedDiff histogram
If Vim is in diff mode, the diff will be updated to this:

histogram diff

Note, that the Patience algorithm might not always provide better diffs. But
using this plugin you can at least easily switch between different diffs.

Update

Starting with Vim 8.1.0360 Vim now comes bundled with the xdiff
library and is able to handle diff internally without falling back to
calling diff as external tool.

This means, one can now simply set diffopt:

if has("patch-8.1.0360")
    set diffopt+=internal,algorithm:patience
endif

and Vim will use the patience diff algorithm when creating a diff.

In addition, Vim can now parse context diffs (currently with only zero
context lines) from a diff tool when using diff as external tool. So a
translation to an ed-like diff is not needed anymore.

So in essence, starting with that Vim version, you don't need to use this
plugin anymore.

Ignoring parts of a file

Using the command :EnhancedDiffIgnorePat pat you can define patterns, that
will be ignored before feeding the buffer contents to the diff program.
Internally this will be handled by substituting those matches with 'XX'
so that the content will look like the same for the diff binary.

This is how it looks like with a pattern of ^[^;]\+; and ;[^;]\+$
diff_ignore

Installation

Use the plugin manager of your choice:

  • Pathogen

    • git clone https://github.com/chrisbra/vim-diff-enhanced.git ~/.vim/bundle/vim-enhanced-diff
    • :Helptags (only needed once after the installation to install the documentation)
  • NeoBundle

    • NeoBundle 'chrisbra/vim-diff-enhanced'
  • Vundle

    • Plugin 'chrisbra/vim-diff-enhanced'
  • Vim-Plug

    • Plug 'chrisbra/vim-diff-enhanced'

Alternatively download the [stable][] version of the plugin, edit it with Vim (vim EnhancedDiff-XXX.vmb) and simply source it (:so %). Restart and take a look at the help (:h EnhancedDiff.txt)

Usage

Once installed, take a look at the help at :h EnhancedDiff

Here is a short overview of the functionality provided by the plugin:

Ex commands:

:PatienceDiff - Use the Patience Diff algorithm for the next diff mode

:EnhancedDiff <algorithm> - Use <algorithm> to generate the diff.
Use any of

  • myers Default Diff algorithm used
  • default Alias for myers algorithm
  • histogram Fast version of patience algorithm
  • minimal Default diff algorithm, trying harder to minimize the diff
  • patience Patience diff algorithm.

Note: Those 2 commands use the git command line tool internally to generate the

  1. Make sure you have at least git version 1.8.2 installed.

:EnhancedDiffDisable - Disable plugin (and use default Vim diff capabilities).

FAQ

How can I enable the patience diff algorithm when starting as vimdiff / git difftool / ... ?

In that case, add this snippet to your .vimrc:

" started In Diff-Mode set diffexpr (plugin not loaded yet)
if &diff
    let &diffexpr='EnhancedDiff#Diff("git diff", "--diff-algorithm=patience")'
endif

License & Copyright

© 2015 by Christian Brabandt. The Vim License applies. See :h license

NO WARRANTY, EXPRESS OR IMPLIED. USE AT-YOUR-OWN-RISK

添加新评论