Как выбрать или выделить блок в Emacs?


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

9 68

9 ответов:

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

короче говоря, вы начинаете выбор, как обычно, с управления -пробел, затем убить регион с управления -xrk и вставить (или Янк) убил блок управления -xry.

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

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

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

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

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

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

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

посмотреть статью: "работа с прямоугольными выделениями", особенно в разделе "Комментарии". Смотрите также раздел cua mode documentation под названием "Поддержка прямоугольника CUA". Там также есть хорошее видео на vimeo.

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

встроенные сочетания клавиш для выбора

  • M-h - важное средство для выбрать пункт. Пункт" часто означает блок кода.

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

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

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

(Примечание: используйте C-g часто для того чтобы отменить маркировку пока экспериментирующий.)

дополнения

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

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

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

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

использовать управления -пробел чтобы установить метку и переместить курсор.

The transient-mark-mode выделить выбор для вас. M -xtransient-mark-mode.

вы можете настроить Emacs для включения этого режима по умолчанию с помощью настройки. M -xcustomize-optionRETtransient-mark-mode.

... и в случае, если вы используете Ubuntu и C-spc не работает для вас: вам нужно очистить IBus" next input method " keybinding, как в

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

цитата взята из ответ на такой вопрос.

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

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

  • C - w для резки.
  • M - w для копирования .
  • C -y для оклейки .