Я хочу выбрать или выделить блок в emacs без использования мыши, но делаю это с клавиатуры, как в визуальном режиме vim. Как проще всего это сделать с клавиатуры?
Я хочу выбрать или выделить блок в emacs без использования мыши, но делаю это с клавиатуры, как в визуальном режиме vim. Как проще всего это сделать с клавиатуры?
Ответы:
Взгляните на прямоугольник региона в emacs.
Короче говоря, вы начинаете выделение, как обычно, с помощью Control- Space, затем убиваете область с помощью Control- x r kи вставляете (или восстанавливаете ) убитый блок с помощью Control- x r y.
Если я правильно понял вопрос, то изначально речь идет не о прямоугольных областях.
C-Spc
ставит отметку в текущей позиции.
Где бы ни был ваш курсор после этого, текст между последней меткой и текущей позицией будет «выбран» (вы можете выделить это, активировав transient-mark-mode
, но это также будет означать, что метки должны быть удалены, когда вы не хотите выделять).
Вы можете работать с этим регионом с помощью таких команд, как:
C-w
. . Убить регион. Это удаляет и помещает регион в список уничтожения.
C-y
. . Янк. Это вставляет последний фрагмент из списка уничтожений.
M-y
. . Циклическое кольцо убийства. Сразу после C-y
этого извлеченная часть заменяется другими фрагментами в круге уничтожения.
M-w
. . Сохраните регион в кольцо убийств. подобноC-w
, но не удаляет.
Это просто базовое использование. У знаков есть и другое применение. Я рекомендую учебник ( C-h t
).
C-s
C-r
в данном контексте обычно используются для поиска конца / начала региона. (Особенно полезно в макросах.)
M-x indent-region
.
indent-region
работает нормально, но c-indent-line-or-region
(тот, что привязан к клавише табуляции ) нет. Последняя функция работает не с отмеченными областями, а с выделенными , т.е. с выделенной областью, как если бы вы выбрали ее мышью.
C-Spc
дважды ударив по месту, на которое поставили метку. Это временно активирует переходный режим отметки (пока вы не отмените (с C-g
)). Затем переместите точку, чтобы увидеть, как появится выбранная область.
Emacs 24.4 теперь имеет режим прямоугольной метки. Cx пробел для его вызова.
См. Статью «Работа с прямоугольными выделениями» , особенно раздел комментариев. См. Также раздел документации режима CUA, озаглавленный «Поддержка прямоугольника CUA». Еще есть хорошее видео на vimeo .
Хотя C-SPC
это распространенный способ начать отмечать что-либо, где бы вы ни находились, часто есть более быстрые / простые способы, которые не предполагают явного перехода к начальной / конечной точкам ...
M-h
- важное средство отметить абзац . «Абзац» часто означает блок кода.
C-M-h
и C-M-@
- для обозначения sexps и defuns соответственно. Это работает для нескольких языков, а не только для шепелявых.
удерживайте Shift - еще один отличный способ выделить во время движения. Например, M-S-f
переводит вперед целое слово. Это есть
shift-select-mode
, и в Emacs 24+ он включен по умолчанию. На некоторых клавиатурах (без шиклета) вы должны уметь удерживать ее C-S-
одним мизинцем.
Вы можете нажимать любую из этих кнопок несколько раз, чтобы увеличить выделение.
Есть также несколько специальных способов пометить вещи:
C-x h
- отметить весь буфер
C-x SPC
- войти в режим прямоугольной метки
(ПРИМЕЧАНИЕ: используйте C-g
часто, чтобы отменить маркировку во время экспериментов.)
Есть несколько дополнительных пакетов, которые улучшают выбор регионов и вещей. Все они прекрасно сочетаются друг с другом и подходят для разных сценариев использования. Используйте их все!
expand-region : Expand region увеличивает выбранный регион на семантические единицы. Просто продолжайте нажимать клавишу, пока она не выберет то, что вы хотите. C-=
является рекомендуемой привязкой для него. Ударьте несколько раз, чтобы получить то, что вам нужно.
easy-kill : используйтеM-w
и мнемонику для выбора различных типов вещей, таких как слова, sexps, списки и т. д.
zop-to-char : аналогично zap-to-char , но обеспечивает удобный выбор и другие действия, управляемые меню.
diff-hl : выделить незафиксированные измененные регионы. Используйте,diff-hl-mark-hunk
чтобы выбрать / отметить кусок.
наложение символа : выберите символ в точке нажатием клавиши (M-i
). Затем вы можете делать с ним другие вещи, например копировать, искать, переходить, заменять и т. Д.
... и в случае, если вы используете Ubuntu и C-spcне работает для вас: вам нужно очистить привязку клавиш IBus «следующий метод ввода», как в
запустите
ibus-setup
и измените привязку клавиш для «следующего метода ввода» на что-то другое (или полностью удалите его, нажав кнопку «...», а затем кнопку «Удалить»).
Цитата взята из ответа на вопрос SO.
Чтобы расширить ответ Эдина Сальковича, если вы используете режим CUA, вы можете использовать, чтобы начать выбор визуального блока. Существует множество ярлыков для управления выбором блока, описанных в документации CUA .
В Emacs 25 просто нажмите C- Spaceи затем переместите курсор туда, куда вы хотите выделить / выбрать интересующую вас область текста. После этого вам могут понадобиться следующие команды:
mark-defun