#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