Я хочу выделить или выделить блок в Emacs, не используя мышь, но делая это с клавиатуры, как VIM Visual Mode. Какой самый простой способ сделать это с клавиатуры?
Как выбрать или выделить блок в Emacs?
Ответ 1
Взгляните на прямоугольник области в emacs.
Короче говоря, вы начинаете выбор, как обычно, с Control - Space, затем уничтожайте область с помощью Control - x r k и вставляйте (или yank) убитый блок с помощью Control - x r y.
Ответ 2
Если я правильно понял вопрос, это не касается первоначально прямоугольных областей.
C-Spc
помещает отметку в текущую позицию.
В любом месте, где находится ваш курсор, текст между последней меткой и текущей позицией "выбран" (вы можете выделить это, активировав transient-mark-mode
, но это также означает, что метки должны быть удалены, если вы не хотите выделить).
Вы можете работать в этом регионе с такими командами, как:
C-w
., Убить регион. Это удаляет и помещает регион в кольцо уничтожения.
C-y
., Вырезание. Это вставляет последний фрагмент из кольца уничтожения.
M-y
., Циклическое кольцо. Сразу после C-y
это заменяет дергаемую часть другими фрагментами в кольце уничтожения.
M-w
., Сохраните область в кольцо убийства. Как C-w
, но не удаляет.
Это просто основное использование. Знаки также используются в других целях. Я рекомендую учебник (C-h t
).
Ответ 3
Emacs 24.4 теперь имеет режим прямоугольной метки. C-x для его вызова.
Ответ 4
См. статью: "Работа с прямоугольными выделениями" , особенно раздел комментариев. См. Также раздел Документация режима CUA под названием "Поддержка прямоугольника CUA". Там также есть хорошее видео на vimeo.
Ответ 5
Хотя C-SPC
является обычным способом начать что-то отмечать, где бы вы ни находились, часто бывают более быстрые/более простые способы, которые не предполагают явного перехода к начальной/конечной точке...
Встроенные ярлыки выбора
-
Mh
- важное средство для выделения абзаца. "Абзац" часто означает блок кода. -
C-Mh
и[email protected]
- для обозначения sexps и defuns соответственно. Это работает для нескольких языков, а не только для шуток. -
Удерживайте нажатой клавишу Shift - еще один приятный способ выделить во время движения. Например,
MSf
выделяет вперед целое слово. Этоshift-select-mode
, и он включен по умолчанию в Emacs 24+. На некоторых (не chiclet) клавиатурах вы сможете удерживатьC-S-
одним мизинцем.
Вы можете нажать любую из них несколько раз, чтобы увеличить выбор.
(ПРИМЕЧАНИЕ: часто используйте C-g
для отмены маркировки во время экспериментов.)
Дополнения
Есть несколько дополнительных пакетов, которые улучшают выбор регионов и вещей. Все они прекрасно сочетаются друг с другом и подходят для разных вариантов использования. Используйте их всех!
-
Expand-Region: Expand region увеличивает выделенную область на семантические единицы. Просто продолжайте нажимать клавишу, пока она не выберет то, что вы хотите.
C-=
рекомендуемое связывание для него. Нажмите несколько раз, чтобы получить то, что вам нужно. -
Easy-Kill: используйте
Mw
и мнемонику для выбора различных типов вещей, таких как слова, sexps, списки и т.д. -
Zop-to-Char: Как и zap-to-char, но предоставляет хороший выбор и другие действия, управляемые меню.
-
diff-hl: выделение незафиксированных измененных регионов. Используйте
diff-hl-mark-hunk
чтобы выбрать/пометить кусок.
Ответ 6
Используйте Control - Space для установки метки и перемещения курсора.
transient-mark-mode
выделит для вас выбор. M - x transient-mark-mode
.
Вы можете настроить Emacs для включения этого режима по умолчанию с помощью настройки. M - x customize-option
RET transient-mark-mode
.
Ответ 7
... и если вы используете Ubuntu и C-spc не работает для вас: вам нужно очистить клавиатуру IBus "следующий входной метод", как в
запустите
ibus-setup
и измените привязку клавиш для "следующий метод ввода" на что-то другое (или полностью удалить его нажав кнопку "...", а затем кнопку "Удалить" ).
Цитата из ответ на вопрос SO.
Ответ 8
Чтобы расширить ответ Эдина Салковича, если вы используете режим CUA, вы можете использовать, чтобы начать выбор визуального блока. Существует множество ярлыков для управления выбором блока, описанным в документации по CUA.
Ответ 9
В Emacs 25 просто нажмите C - Space, а затем переместите курсор туда, где вы хотите выделить/выбрать область текста, которая вас интересует. После этого вам могут понадобиться следующие команды:
- C - w для резки.
- M - w для копирования.
- C - y для вставки.