領域を 4 つのスペースでインデント/インデント解除する 2 つのキー バインディングを定義したいと考えています。
前:
hello
world
foo
bar
- と を視覚的に選択
world
しますfoo
。 - タイプ>
後:
hello
world
foo
bar
<また、インデントされていない領域にバインドしたいと考えています。
に詳しくないemacs
ので、助けてください。
領域を 4 つのスペースでインデント/インデント解除する 2 つのキー バインディングを定義したいと考えています。
hello
world
foo
bar
world
しますfoo
。hello
world
foo
bar
<また、インデントされていない領域にバインドしたいと考えています。
に詳しくないemacs
ので、助けてください。
そのためのキーボード ショートカットが既に用意されています。
インデント: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 つのスペースでインデント/インデント解除します。
(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))))
@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