Как настроить Ctrl-Shift-Left/Right для выделения текста в emacs?
Основная проблема, которую я имею, состоит в том, что режим маркировки работает как кнопка переключения. Каждый раз, когда вы звоните set-mark-command
, "C-Space"
Вы входите или выходите из режима метки. Я мог бы связать любую ключевую комбинацию с
(defun foo () "" (progn (set-mark-command) (left-word)))
но в следующий раз я позвоню foo
мой выбор будет отменен.
Есть ли функция, которая только переключает режим выбора вместо переключения? Тогда я мог бы выбирать текст более свободно, что мне действительно нужно, так как я комментирую большой текстовый корпус.
1 ответ
Я не уверен, что правильно понял ваш вопрос, но вот несколько мыслей по этому поводу:
1) Если shift-select-mode
переменная установлена в t
Все комбинации Shift и командная точка перемещения временно активируют регион и расширяют его:
- SC-
: расширить область на одно слово справа - S-
: расширить область на один символ справа
Вы можете установить shift-select-mode
используя либо customize
инфраструктура:
Mx
customize-variable
RETshift-select-mode
RET
или в вашем файле инициализации:
(setq shift-select-mode t)
2) Исходя из примера кода, вы можете написать команду, активирующую регион и расширяющую ее следующим образом:
(defun foo ()
""
(interactive) ;; this is a command (i.e. can be interactively used)
(when (not (region-active-p)) ;; if the region is not active...
(push-mark (point) t t)) ;; ... set the mark and activate it
(backward-word)) ;; move point
;; Bind the command to a key
(global-set-key (kbd "C-S-<left>") 'foo)