Как связать ключи с indent/unindent region в emacs?
Я хочу определить два привязки клавиш к области indent/unindent на 4 пробела.
Перед
hello
world
foo
bar
- Визуально выберите
world
и foo
.
- Тип >
После того, как:
hello
world
foo
bar
Я также хочу привязать < к unindent region.
Я не знаком с emacs
, пожалуйста, помогите.
Ответы
Ответ 1
Для этого уже есть сочетания клавиш:
Отступ: C-u 4 C-x TAB
Unindent C-u - 4 C-x TAB
Если вы слишком долго набираете текст, вы можете поместить в файл .emacs следующее:
(defun my-indent-region (N)
(interactive "p")
(if (use-region-p)
(progn (indent-rigidly (region-beginning) (region-end) (* N 4))
(setq deactivate-mark nil))
(self-insert-command N)))
(defun my-unindent-region (N)
(interactive "p")
(if (use-region-p)
(progn (indent-rigidly (region-beginning) (region-end) (* N -4))
(setq deactivate-mark nil))
(self-insert-command N)))
(global-set-key ">" 'my-indent-region)
(global-set-key "<" 'my-unindent-region)
С помощью этого кода символы больше чем (>) и меньше (<) будут отступать/удалять отмеченную область на 4 пробела.
Ответ 2
(defun keyboard-indent (&optional arg)
(interactive)
(let ((deactivate-mark nil)
(beg (or (and mark-active (region-beginning))
(line-beginning-position)))
(end (or (and mark-active (region-end)) (line-end-position))))
(indent-rigidly beg end (* (or arg 1) tab-width))))
(defun keyboard-unindent (&optional arg)
(interactive)
(keyboard-indent (* -1 (or arg 1))))
Ответ 3
В дополнение к тому, что уже написал @Thomas, вы можете не захотеть использовать клавиши <
и >
для отступов или отступов. Просто образ вам нужно написать некоторый HTML и больше не можете вводить эти символы. Вот почему я ввел в свой init file
следующее в качестве настроек ключа:
(global-set-key (kbd "C-<") 'my-indent-region)
(global-set-key (kbd "C->") 'my-unindent-region)
Примечание: он не работает без (kbd ...)
. Вы получите сообщение об ошибке:
global-set-key: Key sequence C - > starts with non-prefix key C