Как настроить 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 инфраструктура:

Mxcustomize-variableRETshift-select-modeRET

или в вашем файле инициализации:

(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)
Другие вопросы по тегам