3

Предположим, у меня есть этот текст:

RUN_
RUN_
RUN_
RUN_
RUN_

и хочу этот:

RUN_A
RUN_B
RUN_C
RUN_D
RUN_E

Я хотел бы иметь возможность написать ABCDE и каким-то образом "транспонировать" его и убивать-дергать как прямоугольник.

Можно ли это сделать без лишнего взлома?

2 ответа2

2
(defun insert-column (chars)
  (interactive "sChars to enter: ")
  (insert-rectangle (mapcar 'string (string-to-list chars))))
0

Отметьте соответствующий текст. Затем нажмите:

Mx delete-trailing-whitespace

Поместите курсор в начало. Введите следующее (с возвратом в соответствующие места)

Mx map-query-replace-regexp

$

ABCDE

Эта процедура сначала очищает завершающие пробелы в каждой строке, а затем в конце строки вставляет A, B и т.д. По одному на этих концах строк. Другие шаблоны замены, конечно, возможны. Это не просто транспонирование прямоугольника, но довольно универсальное и, как правило, ближе к желаемому, поскольку замены не обязательно находятся в одном столбце, а скорее определяются шаблоном.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .