Функции прямоугольника в Emacs - PullRequest
16 голосов
/ 12 сентября 2008

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

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

Ответы [ 3 ]

23 голосов
/ 12 сентября 2008

Если у вас есть данные в столбцах в текстовом файле с 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       
15 голосов
/ 12 сентября 2008

Мне нравится использовать прямоугольник для 2 основных целей: вставлять один и тот же текст в каждую строку или убивать столбец текста (аналогично ответу Дейва Уэбба).

Для этого есть 2 полезных сочетания клавиш, C-x r k убьет прямоугольник и C-x r t для вставки (есть другие команды прямоугольника с префиксом C-x r, но я использую их).

Допустим, вы хотите взять некоторый код и отформатировать его, чтобы вы могли разместить его в сообщении переполнения стека ... вам нужно поставить префикс с 4 пробелами. Итак, перейдите к началу первой строки, отметьте C-SPC, затем перейдите к началу последней строки и введите C-x r t <SPC> <SPC> <SPC> <SPC> <RET>, и вот оно у вас! Затем вы можете просто скопировать и вставить его в переполнение стека. Я сталкивался с более сложными ситуациями, когда это полезно, когда у вас есть текст, который вы хотите вставить в каждую строку в определенном месте.

Так что в другой ситуации, например, в ситуации с Дейвом Уэббом, если вы хотите убить прямоугольник, используйте 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: убийство (как описано выше)
1 голос
/ 31 мая 2014

В 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...