15

我想将两个键绑定定义为缩进/取消缩进区域 4 个空格。


前:

hello
world
foo
bar
  • 直观地选择worldfoo
  • 类型>

后:

hello
    world
    foo
bar

我也想绑定<到 unindent 区域。
我不熟悉emacs,请帮助。

4

3 回答 3

25

已经有键盘快捷键:

缩进:C-u 4 C-x TAB

缩进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 个空格。

于 2012-07-24T05:30:10.693 回答
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))))
于 2013-10-30T17:58:35.927 回答
1

除了@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
于 2015-11-22T19:28:19.000 回答