Как выбрать прямоугольник в 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
, вы увидите, что они работают с прямоугольником, определенным в начале и в конце выбора, несмотря на то, что выбор выглядит как регулярная область.
Ответ 2
В Emacs 24.4 и выше C-x SPC
привязан к rectangle-mark-mode
, который визуально отображает прямоугольник.
http://emacsredux.com/blog/2014/01/01/a-peek-at-emacs-24-dot-4-rectangular-selection/ описывает это более подробно.
Ответ 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
Войдите в режим маркировки прямоangularьника с помощью C-x SPC
Уменьшите или увеличьте область на (Это выделит прямоangularьник):
2.1. Сделайте C-n
или C-p
, чтобы расширить курсор на следующую или предыдущую строки соответственно.
2.2. Теперь вы можете играть с выделением текста, выполнив C-f
, C-b
, M-f
, M-b
и т.д.
Эта выделенная область прямо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
префиксы команд, а также любые другие.)