Объединить два буфера Emacs?

#emacs #elisp

#emacs #elisp

Вопрос:

Учитывая два отдельных буфера emacs, как я могу их объединить, соединив первые строки каждого, затем вторую и т.д.? Вероятно, мне нужно будет добавить пробел после каждой строки в буфере # 1, чтобы в итоге не получилось, например, «a b1 2».

Буфер #1

a b 
a c 
c x

Буфер #2

1 2
5 4
3 2

Результат

a b 1 2
a c 5 4
c x 3 2

Ответ №1:

Вы должны быть в состоянии использовать прямоугольники для этого. Просто скопируйте содержимое буфера 2, а затем переместите его прямоугольником (C-x r y) в буфер 1, поставив точку на один пробел справа от ‘b’ в первой строке.

Ответ №2:

Использовать M-x 2C-associate и M-x 2C-merge . Возможно, вы захотите использовать C-h v 2C-windows-width или M-x 2C-shrink-window-horizontal.

Комментарии:

1. Всегда есть что-то новое для открытия 🙂

2. Хотя с тривиальным примером в вопросе легче справиться с использованием прямоугольников, 2C-merge имеет значительное преимущество в том, что вам не нужно вручную обрабатывать длинные строки, что, вероятно, делает его более надежным ответом. Это также работает точно так, как вы надеялись, с сужением буфера, что здорово.

Ответ №3:

Обычно я использую инструмент «вставить» для таких приложений (правда, без Emacs ..). Если вы используете Linux, он должен быть доступен по умолчанию.

Это так просто, как:

 $ paste file1 file2 > file3
  

который объединит два файла ‘file1’ и ‘file2’ в выходной ‘file3’, как вы просили. По умолчанию вкладки используются в качестве разделителей столбцов, но это можно изменить с помощью опции ‘-d’.

Ответ №4:

Если вы не возражаете против объединения вне emacs, вы могли бы сохранить два файла и объединить их с помощью awk.

Посмотрите на этот пример:http://www.linuxquestions.org/questions/linux-newbie-8/awk-question-331224/#post1682282