Подтвердить что ты не робот

Прямоугольные функции в emacs

Я читал в нескольких местах, что функции прямоугольника в emacs очень полезны. Я читал немного о них, и я не могу понять, почему. Я имею в виду, когда вы хотите убить абзац, вы помечаете первую строку/столбец, а затем последнюю, а на самом деле прямоугольник, правильно? Но вы все равно можете использовать обычный kill...

Итак, какие преобразования вы бы с ними сделали?

4b9b3361

Ответ 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.