dotfiles/.vim/bundle/vim-dirdiff/doc/dirdiff.txt

330 lines
12 KiB
Plaintext

*dirdiff.txt* Diff and merge two directories recursively
Author: William Lee <http://wlee.net/> <wl1012@yahoo.com>
License: BSD-like (see |dirdiff-license|)
INTRODUCTION *dirdiff* *DirDiff*
This plugin enables you to run vim-diff on two directories recursively. You
can also perform batch or individual merge through a simple interface.
REQUIREMENTS *dirdiff-requirements*
- Make sure you have GNU diff in your path on Unix and Windows. I only
tested this on cygwin's version on Windows. If you have a diff that
doesn't support -x or -I flag, do not set variable g:DirDiffExcludes and
g:DirDiffIgnore to "". It should still work.
- On Windows, you need to have "xcopy", "copy", "del" "rd" and "xxd" in your
path.
- On Unix, you need to have "rm", "cp" and "xxd" in your path.
INSTALLATION *dirdiff-installation*
With pathogen.vim:
$ cd ~/.vim/bundle
$ git clone git://github.com/will133/vim-dirdiff
With vim-plug, put this in your ~/.vimrc:
Plug 'will133/vim-dirdiff'
With Vim 8+'s default packaging system, run this:
$ mkdir -p ~/.vim/pack/bundle/start
$ cd ~/.vim/pack/bundle/start
$ git clone git://github.com/will133/vim-dirdiff
USAGE *dirdiff-usage* *:DirDiff*
>
:DirDiff <A:Src Directory> <B:Src Directory>
<
For example:
>
:DirDiff ../something/dir1 /usr/bin/somethingelse/dir2
<
MAPS *dirdiff-maps*
The following commands can be used inside the diff window:
*dirdiff-enter* *dirdiff-o*
<Enter>, <o> Diff open: open the diff file(s) where your cursor is
at
*dirdiff-s*
<s> Synchronize the current diff. You can also select a
range (through visual) and press 's' to synchronize
differences across a range.
There are 6 Options you can choose when you hit <s>:
1. A -> B
Copy A to overwrite B
If A's file actually points to a directory, it'll
copy it to B recursively.
2. B -> A
Copy B to overwrite A
If B's file actually points to a directory, it'll
copy it to A recursively.
3. Always A
For the rest of the items that you've selected,
synchronize like (1).
4. Always B
For the rest of the items that you've selected,
synchronize like (2).
5. Skip
Skip this diff entry.
6. Cancel
Quit the loop and exit.
*dirdiff-u*
<u> Diff update: update the diff window
*dirdiff-x*
<x> Sets the exclude pattern, separated by ','
*dirdiff-i*
<i> Sets the ignore pattern, separated by ','
*dirdiff-a*
<a> Sets additional arguments for diff, eg. -w to ignore
white space, etc.
*dirdiff-h*
<h> Toggle xxd hex mode on or off.
*dirdiff-w*
<w> Toggle wrap and nowrap mode
<q> Quit DirDiff
The following comamnds can be used in the Vim diff mode if this is global flag
is set to 1 (default to 0): >
let g:DirDiffEnableMappings = 1
<
Note: by default these would not be added, unlike previous version. It is
preferable to not change people's mappings by default. These mappings can be
overriden by their corresponding variables added to .vimrc.
*dirdiff-leader-dg*
<Leader>dg Diff get: maps to :diffget<CR>
>
let g:DirDiffGetKeyMap = '<Leader>dg'
<
*dirdiff-leader-dp*
<Leader>dp Diff put: maps to :diffput<CR>
>
let g:DirDiffPutKeyMap = '<Leader>dp'
<
*dirdiff-leader-dj*
<Leader>dj Diff next: (think j for down)
>
let g:DirDiffNextKeyMap = '<Leader>dj'
<
*dirdiff-leader-dk*
<Leader>dk Diff previous: (think k for up)
>
let g:DirDiffPrevKeyMap = '<Leader>dk'
<
OPTIONS *dirdiff-options*
You can add the following "let" lines in your .vimrc file in order to customize
the plugin's behavior.
Enable additional mappings in diff mode (set to 1 to enable mappings).
Default to do nothing: >
let g:DirDiffEnableMappings = 0
<
Ignore FileName case during diff: >
let g:DirDiffIgnoreFileNameCase = 0
Sets default exclude pattern: >
let g:DirDiffExcludes = "CVS,*.class,*.exe,.*.swp"
Sets default ignore pattern: >
let g:DirDiffIgnore = "Id:,Revision:,Date:"
If DirDiffSort is set to 1, sorts the diff lines: >
let g:DirDiffSort = 1
Sets the diff window (bottom window) height (rows): >
let g:DirDiffWindowSize = 14
Ignore case during diff: >
let g:DirDiffIgnoreCase = 0
Force setting the LANG variable before running DirDiff: >
let g:DirDiffForceLang = "C"
You can set g:DirDiffForceLang to "" in turn this off (the system's LANG would
be used in such case). You may need to customize the following variables so
DirDiff can match the correct text in your locale.
Force the diff execution shell: >
let g:DirDiffForceShell = "C"
If empty, the default shell would not be changed before running the diff
command. If not, then the shell would be set to this before running the diff
command (and restored after the execuation). This is useful for people who
are using shells that are not compatible. If you are getting a message saying
that there's no diff for some shell, you may want to set this to "sh".
Dynamically figure out the diff text. If you are using and i18n version of
diff, this will try to get the specific diff text during runtime. It's turned
off by default. If you are always targetting a specific version of diff, you
can turn this off and set the DirDiffText* variables accordingly: >
let g:DirDiffDynamicDiffText = 0
String used for the English equivalent "Files ": >
let g:DirDiffTextFiles = "Files "
String used for the English equivalent " and ": >
let g:DirDiffTextAnd = " and "
String used for the English equivalent " differ"): >
let g:DirDiffTextDiffer = " differ"
String used for the English equivalent "Only in "): >
let g:DirDiffTextOnlyIn = "Only in "
To specify a valid theme (e.g. github): >
let g:DirDiffTheme = "github"
To use [ and ] rather than [c and ]c motions: >
let g:DirDiffSimpleMap = 1
Add extra options to the "diff" tool. For example, use "-w" to ignore white
spaces or "-N" to list all new files even when inside a new folder (instead of
just listing the new folder name)
let g:DirDiffAddArgs = "-w"
OPTIONS EXAMPLE *dirdiff-options-example*
This is an example for setting DirDiffExcludes and DirDiffIgnore in addition
to enabling the plugin's mappings. Note that patterns are separated with
commas and no spaces.
For example, you can set these in your .vimrc file: >
let g:DirDiffExcludes = "CVS,*.class,*.o"
let g:DirDiffIgnore = "Id:"
" ignore white space in diff
let g:DirDiffAddArgs = "-w"
let g:DirDiffEnableMappings = 1
<
WARNING *dirdiff-warning*
This script can copy and remove your files. This can be powerful (or too
powerful) at times. Please be careful and use version control!
LICENSE *dirdiff-license*
Copyright (c) 2001-2015 William Lee.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name William Lee nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
WILLIAM LEE AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THANKS *dirdiff-thanks*
Florian Delizy for the i18n diff patch
Robert Webb for his sorting function
Wu WeiWei for his Chinese diff patch
Salman Halim, Yosuke Kimura, and others for their suggestions
HISTORY *dirdiff-history*
1.1.7 - Added support for "hex mode" and "wrap mode"
1.1.6 - Fixed problem with vim 8.2 where the :drop would not work with
wildignore. Added option to set shell.
1.1.5 - Fixed split windows problems caused by some .vimrc settings.
1.1.4 - Fixed split windows problems caused by some .vimrc settings.
1.1.3 - Applied the patch to 1.1.2 by Wu WeiWei in order to make diff
that's localized in Chinese work.
1.1.2 - Applied the patch to 1.1.0 instead of 1.0.2. Please do not use
1.1.1
1.1.1 - Make it work with filename with spaces. (Thanks to Atte Kojo)
1.1.0 - Added support for i18n (tested on a French version for now only).
Can dynamically figure out the diff strings output by diff.
1.0.2 - Fixed a small typo bug in the quit function.
1.0.1 - Ensure the path separator is correct when running in W2K
1.0 - Fixed a bug that flags errors if the user use the nowrapscan option.
Implements a quit function that exit the diff windows.
0.94 - Fixed a bug where the diff will give incorrect A and B file due to
similarity of directory names. Allow you to modify the diff
argument.
0.93 - Opps, messed up the key mapping usage.
0.92 - Doesn't use n and p mappings since it confuses the search next key
mapping and causes some bugs. Minor modification to change the
exclude and ignore pattern.
0.91 - Clean up delete routine.
- Added interactive mode.
- Added multiple entries of exclude and ignore pattern.
- Custom configuration through global variables.
- Change exclude and ignore patterns on the fly.
0.9 - Reorganization of the interface. Much simplier dialog for
synchronization. Support for range synchronization option (REALLY
powerful)
- Removed unnecessary key bindings. All key bindings are local to
the diff window. (except for the \dg and \dp)
0.8 - Added syntax highlighting.
- Enter and double-click in buffer opens diff.
- Removed dependency on "sort"
- Removed usage of registry and marker
- Code cleanup and some bug fixes
- On Windows the diff command will use the -i flag instead
- Changed mappings for diff next (\dj) and diff previous (\dk)
- Added mappings for vim diff mode (\dg, \dp)
0.7 Initial Release
vim:tw=78:et:ft=help:norl: