Как выбрать прямоугольник в emacs

В Notepad ++ вы можете нажать Alt-LeftMouseClick-Drag, чтобы выбрать прямоугольную область.

Как это сделать в emacs (windows)?

Я пробовал методы в http://www.emacswiki.org/emacs/RectangleCommands, но мой выбор происходит в виде правильной области вместо прямоугольной формы:

http://i.stack.imgur.com/tBMBN.png

Я также попытался включить/отключить режим cua.

Ответ 1

В Emacs, влияет ли команда на непрерывный фрагмент текста или прямоугольник, зависит от команды, а не от того, как выглядит выбор.

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

Ответ 3

Вы используете команды прямоугольника, помещая метку в один угол прямоугольника и указывая на противоположный угол. Несмотря на то, что регион будет отображаться как обычно, команды прямоугольника будут действовать на прямоугольник, ограниченный точкой и меткой. Режим CUA не влияет на это.

screenshot of emacs with mark, point, and rectangle highlighted

Вам просто нужно использовать свое воображение:)

Ответ 4

Еще один интересный, который можно добавить в список.

Если вы используете evil-mode (т.е. уровень эмуляции Vim), вы можете использовать evil-visual-block (привязка по умолчанию C-v) для визуального выбора прямоугольника.

Ответ 5

Если вы хотите увидеть прямоугольный выбор, используйте вместо этого прямоугольники CUA. Включите его с помощью

(cua-selection-mode t)

Затем используйте M-RET, чтобы начать выделение, переместите курсор, чтобы изменить его (вы также можете нажать RET, чтобы переместить курсор в разные углы), C-?, чтобы получить список команд для работы на прямоугольнике, M-RET с активным выбором отменяет выбор, как и C-g.

Режим выбора CUA не включает остальную часть CUA, поэтому C-x, C-c, C-v и т.д. не изменятся.

Ответ 6

  1. Войдите в режим маркировки прямоangularьника с помощью C-x SPC

  2. Уменьшите или увеличьте область на (Это выделит прямоangularьник):

    2.1. Сделайте C-n или C-p, чтобы расширить курсор на следующую или предыдущую строки соответственно.

    2.2. Теперь вы можете играть с выделением текста, выполнив C-f, C-b, M-f, M-b и т.д.

  3. Эта выделенная область прямоangularьника может использоваться для выполнения некоторых действий, таких как

    • убить: C-x r k
    • удалить: C-x r d
    • yank: C-x r y (вставить последний убитый прямоangularьник в позицию курсора)

Ответ 7

В дополнение к тому, что упомянули другие, в том числе об подсветке, показанной как прямоугольник, с помощью rectangle-mark-mode и cua-rectangle-mark-mode, библиотека Позиция режима (modeline-posn.el) предоставляет следующую функцию для использования с командами прямоугольников: она показывает длину и ширину прямоугольника в режиме line, как часть size-indication-mode.

Обычно size-indication-mode показывает только размер буфера и текущее относительное положение в буфере. С библиотекой modeline-posn.el то, что вы видите, отличается, когда область активна:

  • Для команды прямоугольника, которая читает ввод, вы видите количество строк и столбцов прямоугольника (например, 21 rows, 16 cols)

  • В противном случае размер области .

Вы можете настроить способ отображения этой информации (опция modelinepos-style). По умолчанию размер активного региона отображается как количество символов и количество строк в области (например, 473 ch, 3 l).

Лицом, используемым для индикации режима активной области (включая прямоугольник), является лицо region, поэтому оно выглядит так же, как и область.

Дополнительная функция привлекает ваше внимание к индикации области линии режима, когда команда, действующая на активную область, или изменяет ее поведение при активной области, считывает ввод. Это просто использует другое лицо, которое по умолчанию является face region, но с красной надписью и подчеркиванием.

Наконец, опция Boolean modelinepos-empty-region-flag определяет, будет ли пустая активная область указана в строке режима, чтобы привлечь ваше внимание (вы, возможно, не заметите, что вы действуете в пустой области). Например, вы видите (выделено с помощью face region): 0 ch, 0 l.

Ответ 8

Вы можете сделать то же самое с помощью мыши, если хотите. Хотя это не так специфично, как делать это с помощью клавиатуры, где вы можете выбрать символы, которые не существуют после конца строки, например, они будут выполнять большинство случаев использования.

(defun mouse-start-rectangle (start-event)
  (interactive "e")
  (deactivate-mark)
  (mouse-set-point start-event)
  (rectangle-mark-mode +1)
  (let ((drag-event))
    (track-mouse
      (while (progn
               (setq drag-event (read-event))
               (mouse-movement-p drag-event))
        (mouse-set-point drag-event)))))

(global-set-key (kbd "M-<down-mouse-1>") #'mouse-start-rectangle)

Найдено здесь: https://emacs.stackexchange.com/a/7261

Ответ 9

Доступ к большинству r команд ectangle осуществляется с помощью префикса C-x r (общий с помощью команд r egister "). См. Ручная секция Rectangles здесь для описания всех специальных kill, yank, delete, number, replace, и т.д., которые вам понадобятся для использования с вашими прямоугольниками.

Единственная команда с не префиксом прямоугольника - это инициатор C-x SPC (rectangle-mark-mode), но это достаточно легко запомнить, будучи как очень распространенный C-SPC (set-mark-command).

Похоже, что в последних версиях Emacs выбранный регион работает чтобы показать, что именно выбрано.


(рекомендую helm-descbinds или guide-key, чтобы завершить C-x r префиксы команд, а также любые другие.)