Comparing and Merging Files - 8. Interactive Merging with sdiff

Go to the first, previous, next, last section, table of contents.

# 8. Interactive Merging with `sdiff`

With `sdiff`, you can merge two files interactively based on a side-by-side ``-y'` format comparison (see section 2.4 Showing Differences Side by Side). Use ``-o file'` or ``--output=file'` to specify where to put the merged text. See section 15. Invoking `sdiff`, for more details on the options to `sdiff`.

Another way to merge files interactively is to use the Emacs Lisp package `emerge`. See section `emerge' in The GNU Emacs Manual, for more information.

## 8.1 Specifying `diff` Options to `sdiff`

The following `sdiff` options have the same meaning as for `diff`. See section 12.1 Options to `diff`, for the use of these options.

    -a -b -d -i -t -v
    -B -H -I regexp

    --ignore-blank-lines  --ignore-case
    --ignore-matching-lines=regexp  --ignore-space-change
    --left-column  --minimal  --speed-large-files
    --suppress-common-lines  --expand-tabs
    --text  --version  --width=columns

For historical reasons, `sdiff` has alternate names for some options. The ``-l'` option is equivalent to the ``--left-column'` option, and similarly ``-s'` is equivalent to ``--suppress-common-lines'`. The meaning of the `sdiff` ``-w'` and ``-W'` options is interchanged from that of `diff`: with `sdiff`, ``-w columns'` is equivalent to ``--width=columns'`, and ``-W'` is equivalent to ``--ignore-all-space'`. `sdiff` without the ``-o'` option is equivalent to `diff` with the ``-y'` or ``--side-by-side'` option (see section 2.4 Showing Differences Side by Side).

## 8.2 Merge Commands

Groups of common lines, with a blank gutter, are copied from the first file to the output. After each group of differing lines, `sdiff` prompts with ``%'` and pauses, waiting for one of the following commands. Follow each command with `RET`.

``e'`
  Discard both versions. Invoke a text editor on an empty temporary file, then copy the resulting file to the output.
``eb'`
  Concatenate the two versions, edit the result in a temporary file, then copy the edited result to the output.
``el'`
  Edit a copy of the left version, then copy the result to the output.
``er'`
  Edit a copy of the right version, then copy the result to the output.
``l'`
  Copy the left version to the output.
``q'`
  Quit.
``r'`
  Copy the right version to the output.
``s'`
  Silently copy common lines.
``v'`
  Verbosely copy common lines. This is the default.

The text editor invoked is specified by the `EDITOR` environment variable if it is set. The default is system-dependent.

Go to the first, previous, next, last section, table of contents.