22.14.1 Обзор Emerge
Чтобы запустить Emerge, выполните одну из этих четырех команд:
M-x emerge-files
Объединяет два заданных файла.
M-x emerge-files-with-ancestor
Объединяет два заданных файла, со ссылкой на общего предка.
M-x emerge-buffers
Объединяет два буфера.
M-x emerge-buffers-with-ancestor
Объединяет два буфера со ссылкой на общего предка в третьем буфере.
Команды Emerge сравнивают два файла или буфера и отображают результат сравнения в трех буферах: по одному на каждый входной файл (буфер A и буфер B) и один (буфер объединения), где объединение и происходит. Буфер объединения показывает весь объединяемый текст, а не только различия. Везде, где буферы различаются, вы можете выбрать тот, из которого вы хотите внести фрагмент.
Команды Emerge, которые принимают ввод из существующих буферов, используют только их доступные части, если эти буферы сужены (см. Раздел 30.8 [Сужение], с. 335).
Если доступна общая начальная версия, от которой происходят оба сливаемых текста, Emerge может использовать ее, чтобы вывести предположение о том, какая из альтернатив правильна. Когда одна из текущих версий находится в согласии с предком, Emerge предполагает, что другая текущая версия — это обдуманное изменение, которое должно сохраниться в объединенной версии. Если вы хотите указать общий начальный текст, используйте команды ‘with-ancestor’. Эти команды считывают три файла или имени буфера — вариант A, вариант B и их общего предка.
После того как сравнение завершено, и буферы подготовлены, начинается интерактивное объединение. Вы можете управлять им, набирая особые команды объединения в буфере объединения. Этот буфер показывает вам полный объединенный текст, а не только различия. Для каждого промежутка различий между входными текстами вы можете сохранить любой или отредактировать их вместе.
В буфере объединения используется особый основной режим, режим Emerge, с командами для принятия таких решений. Но вы также можете редактировать этот буфер с помощью обычных команд Emacs.
В любой момент времени внимание Emerge сосредоточено на одном конкретном измене-
нии, называемом выделенным. Это изменение помечается в трех буферах таким образом:
vvvvvvvvvvvvvvvvvvvv
различающийся текст
^^^^^^^^^^^^^^^^^^^^
Emerge последовательно нумерует все различия, и строка режима всегда показывает номер выделенного различия.
Обычно буфер объединения изначально содержит версию A текста. Но когда версия A изменения согласуется с общим предком, для этого изменения предпочтение отдается версии B.
Когда вы выходите, Emerge оставляет объединенный текст в буфере объединения. Тогда вы можете сохранить его с помощью C-x C-w. Если вы задали emerge-files или emerge-files-with-ancestor числовой аргумент, эти команды считает имя выходного файла в минибуфере. (Это последнее имя, которое они считывают.) Тогда при выходе из Emerge объединенный текст сохраняется в выходном файле.
Обычно команды Emerge сохраняет выходной буфер, когда вы выходите. Если вы прервете Emerge с помощью C-], команда Emerge не сохранит выходной буфер, но вы можете записать его сами, если хотите.
22.14.2 Подрежимы Emerge
Вы можете выбирать из двух режимов для отдания команд объединения: режим Fast и режим Edit. В режиме Fast основные команды объединения — это одиночные знаки, но обычные команды Emacs выключены. Это удобно, если вы используете только команды объединения. В режиме Edit все команды объединения начинаются с префикса C-c C-c, и доступны также обычные команды Emacs. Это позволяет редактировать буфер объединения, но замедляет операции Emerge.
Используйте e, чтобы переключится в режим Edit, и C-c C-c f, чтобы переключится в режим Fast. Строка режима изображает режимы Edit и Fast при помощи ‘E’ и ‘F’.
Emerge имеет два дополнительных подрежима, которые затрагивают способ работы определенных команд объединения: режим Auto Advance и режим Skip Prefers.
Если действует режим Auto Advance, команды a и b продвигают к следующему различию. Это позволяет вам быстрее сделать объединение, поскольку вы просто выбираете одну из входных альтернатив. Строка режима изображает режим Auto Advance как ‘A’.
Если действует режим Skip Prefers, команды n и p пропускают различия в состояниях prefer-A и prefer-B (см. Раздел 22.14.3 [Состояние различия], с. 232). Таким образом, вы видите только те различия, для которых ни одна из версий не предполагается “правильной”. Строка режима изображает режим Skip Prefers с помощью ‘S’.
Используйте команду s a (emerge-auto-advance-mode), чтобы установить или сбросить режим Auto Advance. Используйте s s (emerge-skip-prefers-mode), чтобы установить или сбросить режим Skip Prefers. Эти команды включают режим, если им задан положительный аргумент, выключают при отрицательном аргументе и переключают режим, если аргумент не задан.
22.14.3 Состояние различия
Различия в буфере объединения помечаются строками знаков ‘v’ и ‘^’. Каждое различие имеет одно из семи следующих состояний:
A Различие показывает версию A. Команда a всегда производит это состояние;
строка режима отображает его как ‘A’.
B Различие показывает версию B. Команда b всегда производит это состояние;
строка режима отображает его как ‘B’.
default-A
default-B Различие показывает версию A или B по умолчанию, потому что вы не сделали выбор. Все различия изначально имеют состояние default-A (и таким образом, буфер объединения — это копия буфера A), кроме тех, для которых “предпочтительна” другая альтернатива (смотрите ниже).
Когда вы выбираете различие, его состояние заменяется из default-A или default-B на простое A или B. Таким образом, выбранное различие никогда не находится в состоянии default-A или default-B, и эти состояния никогда не отображаются в строке режима.
Команда d a выбирает в качестве состояния по умолчанию default-A, а d b выбирает default-B. Это состояние по умолчанию применяется ко всем различиям, которые вы никогда не выбирали и для которых нет предпочтительной альтернативы. Если вы продвигаетесь последовательно, то различия, которые вы не выбирали, — это те, что находятся после выбранного. Таким образом, продвигаясь последовательно, вы можете в результате сделать A версией по умолчанию для некоторых фрагментов буфера объединения, а B — версией по умолчанию для остальных фрагментов, используя между различиями d a и d b.
prefer-A
prefer-B Различие показывает состояние A или B, потому что оно предпочтительно. Это означает, что вы не сделали явного выбора, но похоже на то, что верна одна из альтернатив, так как вторая согласуется с общим предком. Значит, когда буфер A находится в согласии с общим предком, предпочтительна версия B, потому что скорее всего это и есть действительное изменение.
Эти состояния показываются в строке режима как ‘A*’ и ‘B*’.
combined Различие показывает комбинацию состояний A и B, как результат команд x c
или x C.
Когда различие имеет это состояние, команды a и b не делают для него ничего,
если только вы не зададите им числовой аргумент.
Строка режима показывает это состояние как ‘comb’.
22.14.4 Команды объединения
Это команды объединения для режима Fast; в режиме Edit предваряйте их набором C-c
C-c:
p Выбирает предыдущее различие.
n Выбирает следующее различие.
a Выбирает версию A этого различия. b Выбирает версию B этого различия. C-u n j Выбирает различие номер n.
. Выбирает различие, содержащее точку. Вы можете использовать эту команды в буфере объединения или в буферах A и B.
q Выход — завершает объединение.
C-] Прерывание — выходит и не сохраняет вывод.
f Переход в режим Fast. (В режиме Edit это на самом деле C-c C-c f.)
e Переход в режим Edit.
l Центирирует (как C-l) все три окна.
Задает часть префиксного числового аргумента.
цифра Также задает часть префиксного числового аргумента.
d a Выбирает A как версию по умолчанию для буфера объединения начиная с этого места.
d b Выбирает B как версию по умолчанию для буфера объединения начиная с этого места.
c a Копирует версию A этого различия в список уничтожений. c b Копирует версию B этого различия в список уничтожений. i a Вставляет версию A этого различия в точке.
i b Вставляет версию B этого различия в точке.
m Помещает точку и метку вокруг этого различия.
^ Прокручивает все три окна вниз (как M-v).
v Прокручивает все три окна вверх (как C-v).
< Прокручивает все три окна влево (как C-x <).
> Прокручивает все три окна вправо (как C-x >).
| Переустанавливает горизонтальную прокрутку во всех трех окнах.
x 1 Сужает окно объединения до одной строки. (Используйте C-u l, чтобы восста-
новить его полный размер.)
x c Комбинирует две версии этого различия (см. Раздел 22.14.6 [Комбинирование в Emerge], с. 235).
x f Показывает имена файлов/буферов, с которыми работает Emerge, в окне справ-
ки. (Используйте C-u l, чтобы восстановить окна.)
x j Сцепляет это различие со следующим. (C-u x j сцепляет это различие с пре-
дыдущим.)
x s Разбивает это различие на два. До того, как применить эту команду, располо-
жите точку в каждом их буферов в том месте, где вы хотите разбить различие.
x t Выбрасывает одинаковые строки сверху и снизу различия. Такие строки появляются, когда версии A и B идентичны, но отличаются от первоначальной версии.
22.14.5 Выход из Emerge
Команда q (emerge-quit) завершает объединение, записывая результаты в выходной файл, если вы его задали. Она восстанавливает правильное содержимое буферов A и B или уничтожает их, если они были созданы Emerge, и вы не изменяли их. Она также выключает в буфере объединения команды Emerge, поскольку выполнение их теперь может повредить содержимое различных буферов.
C-] прерывает объединение. Это означает выход без записи выходного файла. Если вы не указали выходной файл, то между прерыванием и завершением объединения на самом деле нет разницы.
Источник: Ричард Столмен, Руководство по GNU Emacs

March 22nd, 2012
admin
Опубликовано в рубрике
Метки: