DIFFUSE(1) | Diffuse Manual | DIFFUSE(1) |
diffuse - graphical tool for merging and comparing text files
diffuse [-h | -? | --help | -v | --version]
diffuse [--no-rcfile | --rcfile file] [[option...] | [file...]...]
Diffuse is a graphical tool for merging and comparing text files. Diffuse is able to compare an arbitrary number of files side-by-side and gives users the ability to manually adjust line matching and directly edit files. Diffuse can also retrieve revisions of files from Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion, and SVK repositories for comparison and merging.
If a help option is specified, it must be the only argument specified on the command line. Diffuse will immediately quit after displaying the help information.
-h, -?, --help
-v, --version
If a configuration option is specified, it must be the first argument specified on the command line.
--no-rcfile
--rcfile file
-c, --commit rev
-D, --close-if-same
-e, --encoding codec
-L, --label label
-m, --modified
-r, --revision rev
-s, --separate
-t, --tab
-V, --vcs vcs-list
--line line
--null-file
Display options specified in the command line arguments will override saved preference values.
-b, --ignore-space-change
-B, --ignore-blank-lines
-E, --ignore-end-of-line
-i, --ignore-case
-w, --ignore-all-space
Use the File → New 2-Way File Merge, File → New 3-Way File Merge, and File → New N-Way File Merge menu items to create additional tabs for comparing text files. File names and revisions can be specified either in the command line arguments used to invoke Diffuse or in fields on the Open File dialogue.
Diffuse displays files side-by-side inserting gaps to align similar lines of text. Differences are highlighted with a different background colour.
A summary of the compared files is located in the far right margin. The summary illustrates where gaps have been inserted to align matching lines of text and highlights differences using colour. Manual edits are also highlighted in green. A blue cursor identifies the region currently being viewed. The viewed region can be changed by clicking anywhere on the summary.
Lines of text can be selected using the mouse pointer or keyboard. Select lines of text with the mouse pointer by clicking on a line. Click and drag to select multiple lines. Holding down the shift key when clicking will extend the current selection. Select lines using the keyboard by pressing the page up/down or arrow keys. Extend the current selection by holding down the shift key and pressing the page up/down or arrow keys. Move the selection to an adjacent file using the left and right arrow keys.
The mouse pointer or keyboard can be used to manually align lines of text with adjacent files. To aligning lines of text using the mouse pointer, select a line of text with the left mouse button, right click on a line of text from an adjacent file, and choose Align with Selection. To align lines of text using the keyboard, move the selection with the cursor keys, press the space bar to pick the current line of text, move the selection with the cursor keys to a line of text in an adjacent file, and press the space bar to pick the target line of text. Pressing the Escape key will cancel the operation.
Use the Isolate menu item to prevent the selected lines from being matched with any lines from the adjacent files.
Press the Enter key or double-click on a text area to enter text editing mode. The cursor will change to indicate text editing mode and the status bar at the bottom of the window will display the cursor's column position.
In text editing mode, text can be selected with the mouse pointer by click and dragging. The current selection can be extended by holding down the shift key and moving the cursor by clicking with the mouse pointer or pressing any of the arrow, home, end or page up/down keys. Individual words can be selected by double-clicking on them with the mouse pointer. Whole lines can be selected by triple-clicking on them with the mouse pointer.
Modify text by typing on the keyword. Modified lines will be highlighted in green. Use the Undo and Redo menu items to undo and redo the previously preformed operations.
Press the Escape key or click on another file's text area using the left mouse button to leave editing mode.
Use the difference buttons or menu items to navigate between blocks of differences within a file. When navigating, Diffuse will move the selection to the next continuous set of lines with differences or edits.
Use the merge buttons or menu items to copy blocks of text into the selected range of lines. The Undo and Redo menu items can be used to undo and redo the previously preformed operations. All changes to a set of lines can be reverted using the Clear Edits menu item regardless of the order the edits were performed.
Diffuse can retrieve file revisions from several version control systems via their command line interface. The Microsoft Windows build of Diffuse is able to use both the Cygwin and native versions of the supported version control systems. When using Diffuse with Cygwin, ensure Diffuse's Cygwin preferences correctly describe your system. If the Update paths for Cygwin preference exists for a version control system, it must be enabled to use the Cygwin version.
Version control systems are sensitive to the system path and other environment variable settings. The Launch from a Bash login shell preference may be used to easily set the environment for Cygwin version control systems.
The -m option will cause Diffuse to open comparison tabs for each file the version control system indicates has uncommitted modifications. This is convenient for reviewing all changes before committing or resolving a merge conflict. If no paths are specified the current working directory will be used. For example, view all of your uncommitted modifications with this command line:
$ diffuse -m
The default revision of a file will be used for comparison if only one file is specified. For example, this will display a 2-way merge between the default revision of foo.C and the local foo.C file:
$ diffuse foo.C
The -r option may also be used to explicitly specify a particular file revision. Any revision specifier understood by the version control system may be used. The local file will be used for comparison if only one file revision is specified. For example, this will display a 2-way merge between revision 123 of foo.C and the local foo.C file:
$ diffuse -r 123 foo.C
Multiple file revisions can be compared by specifying multiple -r options. For example, this will display a 2-way merge between revision 123 of foo.C and revision 321 of foo.C:
$ diffuse -r 123 -r 321 foo.C
Local files can be mixed with files from the version control system. For example, this will display a 3-way merge between revision MERGE_HEAD of foo.C, the local foo.C file, and revision HEAD of foo.C:
$ diffuse -r MERGE_HEAD foo.C foo.C -r HEAD foo.C
For the -c option may be used to easily specify a pair of sequential revisions. For example, this will display a 2-way merge between revision 1.2.2 of foo.C and revision 1.2.3 of foo.C:
$ diffuse -c 1.2.3 foo.C
Diffuse does not limit the number of panes that can be used for comparing files. The inputs to a Git octopus merge could be viewed with a command line like this:
$ diffuse -r HEAD^1 -r HEAD^2 -r HEAD^3 -r HEAD^4 -r HEAD^5 foo.C
Resources can be used to customise several aspects of Diffuse's appearance and behaviour such as changing the colours used in the user interface, customising the keyboard shortcuts, adding or replacing syntax highlighting rules, or changing the mapping from file extensions to syntax highlighting rules.
When Diffuse is started, it will read commands from the system wide initialisation file /etc/diffuserc (%INSTALL_DIR%\diffuserc on Microsoft Windows) and then the personal initialisation file ~/.config/diffuse/diffuserc (%HOME%\.config\diffuse\diffuserc on Microsoft Windows). This behaviour can be changed with the --no-rcfile and --rcfile configuration options. A Bourne shell-like lexical analyser is used to parse initialisation commands. Comments and special characters can be embedded using the same style of escaping used in Bourne shell scripts.
import file
keybinding context action key_combination
Menu Item Key Bindings
Use menu for the context to define key bindings for menu items. The following values are valid for action:
open_file
Default: Ctrl+o
open_file_in_new_tab
Default: Ctrl+t
open_modified_files
Default: Shift+Ctrl+O
open_commit
Default: Shift+Ctrl+T
reload_file
Default: Shift+Ctrl+R
save_file
Default: Ctrl+s
save_file_as
Default: Shift+Ctrl+A
save_all
Default: Shift+Ctrl+S
new_2_way_file_merge
Default: Ctrl+2
new_3_way_file_merge
Default: Ctrl+3
new_n_way_file_merge
Default: Ctrl+4
close_tab
Default: Ctrl+w
undo_close_tab
Default: Shift+Ctrl+w
quit
Default: Ctrl+q
undo
Default: Ctrl+z
redo
Default: Shift+Ctrl+Z
cut
Default: Ctrl+x
copy
Default: Ctrl+c
paste
Default: Ctrl+v
select_all
Default: Ctrl+a
clear_edits
Default: Ctrl+r
dismiss_all_edits
Default: Ctrl+d
find
Default: Ctrl+f
find_next
Default: Ctrl+g
find_previous
Default: Shift+Ctrl+G
go_to_line
Default: Shift+Ctrl+L
preferences
Default: None
no_syntax_highlighting
Default: None
syntax_highlighting_syntax
Default: None
realign_all
Default: Ctrl+l
isolate
Default: Ctrl+i
first_difference
Default: Shift+Ctrl+Up
previous_difference
Default: Ctrl+Up
next_difference
Default: Ctrl+Down
last_difference
Default: Shift+Ctrl+Down
first_tab
Default: Shift+Ctrl+Page_Up
previous_tab
Default: Ctrl+Page_Up
next_tab
Default: Ctrl+Page_Down
last_tab
Default: Shift+Ctrl+Page_Down
shift_pane_right
Default: Shift+Ctrl+parenleft
shift_pane_left
Default: Shift+Ctrl+parenright
convert_to_upper_case
Default: Ctrl+u
convert_to_lower_case
Default: Shift+Ctrl+U
sort_lines_in_ascending_order
Default: Ctrl+y
sort_lines_in_descending_order
Default: Shift+Ctrl+Y
remove_trailing_white_space
Default: Ctrl+k
convert_tabs_to_spaces
Default: Ctrl+b
convert_leading_spaces_to_tabs
Default: Shift+Ctrl+B
increase_indenting
Default: Shift+Ctrl+greater
decrease_indenting
Default: Shift+Ctrl+less
convert_to_dos
Default: Shift+Ctrl+E
convert_to_mac
Default: Shift+Ctrl+C
convert_to_unix
Default: Ctrl+e
copy_selection_right
Default: Shift+Ctrl+Right
copy_selection_left
Default: Shift+Ctrl+Left
copy_left_into_selection
Default: Ctrl+Right
copy_right_into_selection
Default: Ctrl+Left
merge_from_left_then_right
Default: Ctrl+m
merge_from_right_then_left
Default: Shift+Ctrl+M
help_contents
Default: F1
about
Default: None
Line Editing Mode Key Bindings
Use line_mode for the context to define key bindings for line editing mode. The following values are valid for action:
enter_align_mode
Default: space
enter_character_mode
Defaults: Return, KP_Enter
first_line
Defaults: Home, g
extend_first_line
Default: Shift+Home
last_line
Defaults: End, Shift+G
extend_last_line
Default: Shift+End
up
Defaults: Up, k
extend_up
Defaults: Shift+Up, Shift+K
down
Defaults: Down, j
extend_down
Defaults: Shift+Down, Shift+J
left
Defaults: Left, h
extend_left
Default: Shift+Left
right
Defaults: Right, l
extend_right
Default: Shift+Right
page_up
Defaults: Page_Up, Ctrl+u
extend_page_up
Defaults: Shift+Page_Up, Shift+Ctrl+u
page_down
Defaults: Page_Down, Ctrl+d
extend_page_down
Defaults: Shift+Page_Down, Shift+Ctrl+d
delete_text
Defaults: BackSpace, Delete, x
first_difference
Defaults: Ctrl+Home, Shift+P
previous_difference
Default: p
next_difference
Default: n
last_difference
Defaults: Ctrl+End, Shift+N
clear_edits
Default: r
copy_selection_left
Default: None
copy_selection_right
Default: None
copy_left_into_selection
Default: Shift+L
copy_right_into_selection
Default: Shift+H
merge_from_left_then_right
Default: m
merge_from_right_then_left
Default: Shift+M
isolate
Default: i
Alignment Editing Mode Key Bindings
Use align_mode for the context to define key bindings for alignment editing mode. The following values are valid for action:
enter_line_mode
Default: Escape
enter_character_mode
Defaults: Return, KP_Enter
first_line
Default: g
last_line
Default: Shift+G
up
Defaults: Up, k
down
Defaults: Down, j
left
Defaults: Left, h
right
Defaults: Right, l
page_up
Defaults: Page_Up, Ctrl+u
page_down
Defaults: Page_Down, Ctrl+d
align
Default: space
Character Editing Mode Key Bindings
Use character_mode for the context to define key bindings for character editing mode. The following values are valid for action:
enter_line_mode
Default: Escape
string name value
Used String Resources
The following string resources are used by Diffuse:
difference_colours
Default: difference_1 difference_2 difference_3
[ colour | color ] name red green blue
Used Colour Resources
The following colour resources are used by Diffuse:
alignment
Default: 1 1 0
character_selection
Default: 0.7 0.7 1
cursor
Default: 0 0 0
difference_1
Default: 1 0.625 0.625
difference_2
Default: 0.85 0.625 0.775
difference_3
Default: 0.85 0.775 0.625
edited
Default: 0.5 1 0.5
hatch
Default: 0.8 0.8 0.8
line_number
Default: 0 0 0
line_number_background
Default: 0.75 0.75 0.75
line_selection
Default: 0.7 0.7 1
map_background
Default: 0.6 0.6 0.6
margin
Default: 0.8 0.8 0.8
preedit
Default: 0 0 0
text
Default: 0 0 0
text_background
Default: 1 1 1
float name value
Used Floating Point Resources
The following floating point resources are used by Diffuse:
alignment_opacity
Defaults: 1
character_difference_opacity
Defaults: 0.4
character_selection_opacity
Defaults: 0.4
edited_opacity
Defaults: 0.4
line_difference_opacity
Defaults: 0.3
line_selection_opacity
Defaults: 0.4
syntax name [initial_state default_tag]
syntax_files name [pattern]
syntax_magic name [pattern [ignorecase]]
syntax_pattern name initial_state final_state tag pattern [ignorecase]
The following files are used by Diffuse:
/etc/diffuserc
/usr/share/diffuse/syntax/*.syntax
~/.config/diffuse/diffuserc
~/.config/diffuse/prefs
~/.local/share/diffuse/state
Diffuse was written by Derrick Moser <derrick_moser@yahoo.com>.
© 2006-2014 Derrick Moser. All Rights Reserved.
Diffuse is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the licence, or (at your option) any later version.
2014-07-18 | diffuse 0.4.8 |