如何将密钥绑定到emacs中的缩进/非紧急区域?

时间:2012-07-24 02:16:41

标签: emacs

我想用缩进/未连续区域定义两个键绑定4个空格。


之前:

hello
world
foo
bar
  • 目测选择worldfoo
  • 输入>

后:

hello
    world
    foo
bar

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

3 个答案:

答案 0 :(得分:24)

已有键盘快捷键:

缩进: 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)

使用此代码,大于&gt; )和小于&lt; )键将缩进/取消一个标记的区域,每个区域有4个空格。

答案 1 :(得分: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))))

答案 2 :(得分: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
相关问题