Вопрос

Я читал в нескольких местах, что функции прямоугольника в 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.

Это связано с С-х р Н по умолчанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top