Прямоугольные функции в emacs
Я читал в нескольких местах, что функции прямоугольника в emacs очень полезны. Я читал немного о них, и я не могу понять, почему. Я имею в виду, когда вы хотите убить абзац, вы помечаете первую строку/столбец, а затем последнюю, а на самом деле прямоугольник, правильно? Но вы все равно можете использовать обычный kill...
Итак, какие преобразования вы бы с ними сделали?
Ответы
Ответ 1
Если у вас есть данные в столбцах в текстовом файле с M-x delete-rectangle
или M-x kill-rectangle
, вы можете удалить один столбец данных. Аналогично, M-x yank-rectangle
будет вставляться в столбец текста.
Например, возьмите следующий текст:
1. alligator alphorn
2. baboon bugle
3. crocodile cornet
4. dog didgeridoo
5. elephant euphonium
6. fish flugelhorn
7. gopher guitar
Выберите а от аллигатора до гитары. Начало и конец выделения отмечают два противоположных угла прямоугольника. Введите M-x kill-rectangle
, и вы сразу получите:
1. alphorn
2. bugle
3. cornet
4. didgeridoo
5. euphonium
6. flugelhorn
7. guitar
Затем поместите метку в конец верхней строки, добавьте несколько пробелов, если необходимо, и введите M-x yank-rectangle
и ta-da! Вы изменили порядок столбцов:
1. alphorn alligator
2. bugle baboon
3. cornet crocodile
4. didgeridoo dog
5. euphonium elephant
6. flugelhorn fish
7. guitar gopher
Ответ 2
Мне нравится использовать прямоугольник для двух основных целей, вставляя один и тот же текст в каждую строку или убивая столбец текста (похожий на ответ Dave Webb).
Есть два полезных ярлыка для них, C-x r k
убьет прямоугольник и C-x r t
для вставки (есть другие команды прямоугольника с префиксом C-x r
, но это те, которые я использую).
Итак, скажем, вы хотите взять какой-то код и отформатировать его, чтобы опубликовать его в столбце "Переполнение стека"... вам нужно префикс с 4 пробелами. Итак, перейдите к началу первой строки, C-SPC
, чтобы пометить, затем перейдите к началу последней строки и C-x r t <SPC> <SPC> <SPC> <SPC> <RET>
, и там у вас есть! Затем вы можете просто скопировать и вставить его в Stack Overflow. Я столкнулся с более сложными ситуациями, когда это полезно, когда у вас есть текст, который вы хотите вставить в каждую строку в определенном месте.
Итак, в другой ситуации, такой как ситуация с Дейвом Веббом, если вы хотите убить прямоугольник, используйте C-x r k
, потому что он намного быстрее; -)
Кроме того, согласно моей справочной карте которую я распечатал при первом запуске, вы можете сделать следующее:
-
C-x r r
: скопировать в регистр
-
C-x r y
: держите прямоугольник
-
C-x r o
: открыть прямоугольник, сдвигая текст вправо (что бы это ни значило...)
-
C-x r c
: вычеркните прямоугольник (я предполагаю, что это означает замену его пробелами, но вам нужно попробовать его увидеть)
-
C-x r t
: префикс с текстом (как описано выше)
-
C-x r k
: убийство (как описано выше)
Ответ 3
В emacs24 + также существует функция для строк нумерации:
(rectangle-number-lines START END START-AT &optional FORMAT)
Insert numbers in front of the region-rectangle.
START-AT, if non-nil, should be a number from which to begin
counting. FORMAT, if non-nil, should be a format string to pass
to `format' along with the line count. When called interactively
with a prefix argument, prompt for START-AT and FORMAT.
По умолчанию привязывается к C-x r N.