Как выделить или выделить блок в Emacs? - PullRequest
73 голосов
/ 18 марта 2009

Я хочу выбрать или выделить блок в emacs, не используя мышь, но делая это с клавиатуры, как визуальный режим vim. Какой самый простой способ сделать это с клавиатуры?

Ответы [ 9 ]

65 голосов
/ 18 марта 2009

Если я правильно понимаю вопрос, то изначально речь идет не о прямоугольных областях.

C-Spc ставит отметку в текущей позиции.

Где бы ни находился ваш курсор, текст между последней отметкой и текущей позицией «выделяется» (вы можете выделить это, активировав transient-mark-mode, но это также будет означать, что отметки должны быть удалены, если вы не хочу выделить).

Вы можете работать в этом регионе с помощью команд, таких как:

C-w. , Убей регион. Это удаляет и помещает регион в список уничтожений.
C-y. , Вырезание. Это вставляет последний фрагмент из списка уничтожений.
M-y. , Цикл убить кольцо. Сразу же после C-y это заменяет восстановленную часть другими фрагментами в списке уничтожения.
M-w. , Сохранить регион в кольцо уничтожения. Как и C-w, но не удаляет.

Это только базовое использование. У знаков есть и другие применения. Я рекомендую учебник (C-h t).

58 голосов
/ 18 марта 2009

Взгляните на регион-прямоугольник в emacs.

Короче говоря, вы начинаете выделение как обычно с Control - Пробел , затем убиваете область с помощью Control - x r k и вставьте (или yank ) убитый блок с помощью Control - x r у .

25 голосов
/ 29 октября 2014

Emacs 24.4 теперь имеет режим прямоугольной метки. C-x пробел, чтобы вызвать его.

16 голосов
/ 18 марта 2009

См. Статью: «Работа с прямоугольными выделениями» , особенно в разделе комментариев. См. Также раздел Документация режима CUA под названием "Поддержка прямоугольника CUA". Есть также хорошее видео на vimeo .

7 голосов
/ 14 апреля 2016

Хотя C-SPC - это обычный способ начать что-то отмечать с где бы вы ни были, часто бывают более быстрые / более простые способы задействовать явное перемещение в начальную / конечную точки ...

Встроенные ярлыки выбора

  • M-h - важный способ отметить абзац . Параграф" часто означает блок кода.

  • C-M-h и C-M-@ - для разметки полов и определений , соответственно. Это работает для нескольких языков, а не только для lisps.

  • удерживайте нажатой клавишу Shift - еще один удобный способ выделения во время движение. Например, M-S-f выделяет вперед целое слово. Это shift-select-mode, и он включен по умолчанию в Emacs 24+. На некоторых (не chiclet) клавиатуры, вы должны быть в состоянии удерживать C-S- с одним мизинец.

Вы можете нажать любую из них несколько раз, чтобы увеличить выделение.

(ПРИМЕЧАНИЕ: часто используйте C-g для отмены маркировки во время экспериментирования.)

Дополнения

Существует несколько пакетов дополнений , которые улучшают выбор регионов и вещи. Все они прекрасно играют вместе и подходят для разных целей. случаев. Используйте их все!

  • Расширить регион : Расширение региона увеличивает выделенный регион на семантические единицы. Просто продолжайте нажимать клавишу, пока она не выберет то, что вы хотите. C-= является рекомендуемое связывание для этого. Нажмите несколько раз, чтобы получить то, что вы необходимо.

  • Easy-Kill : использовать M-w и мнемоника для выбора различных типов вещей, таких как слова, sexps, списки и т. д.

  • Zop к Char : Как zap-to-char , но обеспечивает хороший выбор и другие действия на основе меню.

  • diff-hl : выделение незафиксированных измененных областей. Используйте diff-hl-mark-hunk, чтобы выбрать / пометить ломоть.

6 голосов
/ 18 марта 2009

Используйте Control - Пробел , чтобы установить метку и переместить курсор.

transient-mark-mode выделит выбор для вас. М - х transient-mark-mode.

Вы можете настроить Emacs для включения этого режима по умолчанию, используя настройки. M - x customize-option RET transient-mark-mode.

1 голос
/ 10 апреля 2015

... и в случае, если вы используете Ubuntu и C-spc не работает для вас: вам необходимо очистить привязку клавиш "следующий метод ввода" IBus, как в

запустите ibus-setup и измените привязку ключа для «следующий метод ввода» к чему-либо другому (или полностью удалите его нажмите кнопку «...», а затем кнопку «Удалить»).

Цитата взята из ответа на вопрос SO.

0 голосов
/ 10 августа 2018

В Emacs 25 просто нажмите C - Пробел , а затем переместите курсор туда, где вы хотите выделить / выбрать область текста, которая вас интересует. После этого вам могут понадобиться следующие команды:

  • C - w для резки.
  • M - w для копирования.
  • C - y для оклейки.
0 голосов
/ 11 июня 2012

Чтобы расширить ответ Edin Salkovic, если вы используете режим CUA, вы можете использовать, чтобы начать выбор визуального блока. Существует множество комбинаций клавиш для управления выбором блоков, описанных в документации CUA .

...