私はEmacsで非常に簡単なことをしたいと思います。 TABキーを押すと、スペースを2つ挿入するように設定したいと思います。ちょうどこれ。それが私が望むすべてです。私は何年もこれをやろうとしましたが、うまくいきませんでした。すべてのファイル形式でさまざまな方法で爆発します。 HTMLファイル? 4つのスペースを選択するにはランダムに選択し、インデントのために前の行に移動するにはTabキーを押します。 Pythonファイル?スペースを4つだけ入力すると、すべての設定は無視されます。また、以前に動作していた月の位相に応じてランダムに動作を停止するようです。
私の.emacsから:
(setq indent-tabs-mode nil)
(setq tab-width 2)
これはうまくいくでしょうか?いいえ、いいえ。 emacsには、私が言った内容を完全に無視するすべての拡張子に対して魔法の妖精「ファイルモード」があるようです。それでは、この魔法の妖精構成を見つけて、すべてのファイル形式に対してオーバーライドする必要がありますか?この簡単なことを機能させるにはどうすればよいですか?ハーフ。
答え1
Tabすべての言語には独自のインデント規則があるため、簡単にアクセスできるキーを使用して常に同じ効果を得ることはあまり役に立ちません。だからたくさんメインモード1 キーバインディングをオーバーライドします。
特定のモードの設定を上書きするには、そのモードを適切なキーマップにバインドします。
(defun insert-two-spaces (&optional count)
(interactive "*p")
(insert (make-string (* 2 count) ?\ )))
(add-hook 'python-mode-hook '(local-set-key "\t" 'insert-two-spaces))
すべての場所の設定を上書きするには、常にオンを定義します。小さなモード。よりエリップマニュアル補助モードを定義する方法を学びます。
(define-minor-mode magnus-minor-mode
"Override the binding of the TAB key."
:keymap '(([?\t] . insert-two-spaces))
:global t)
(magnus-minor-mode 1)
1 「魔法の妖精ファイルモード」と呼ぶのが基本モードです。自動的にタスクを実行するエディタが好きでない場合はお勧めします。ナノメートル。