Вопрос
Я читал в нескольких местах, что функции прямоугольника в emacs очень полезны.Я немного читал о них и не могу понять, почему.Я имею в виду, что когда вы хотите уничтожить абзац, вы отмечаете первую строку/столбец, а затем последнюю, и это на самом деле прямоугольник, верно?Но вы все равно можете использовать обычное убийство...
Какие трансформации вы бы с ними сделали?
Решение
Если у вас есть данные в столбцах текстового файла с 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
и та-да!Вы изменили порядок столбцов:
1. alphorn alligator
2. bugle baboon
3. cornet crocodile
4. didgeridoo dog
5. euphonium elephant
6. flugelhorn fish
7. guitar gopher
Другие советы
Мне нравится использовать прямоугольник для двух основных целей: вставлять один и тот же текст в каждую строку или уничтожать столбец текста (аналогично ответу Дэйва Уэбба).
Для них есть 2 полезных ярлыка: 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
:убийство (как описано выше)
В 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.
Это связано с С-х р Н по умолчанию.