Emacsのテキストモードで4スペースインデントを設定する 質問する

Emacsのテキストモードで4スペースインデントを設定する 質問する

TABメジャー モードでバッファ内でを押したときに、Emacs を 8 スペース タブから 4 スペース タブに切り替えることができませんでしたtext-mode。 に次の内容を追加しました.emacs:

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)

;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)

.emacsファイル(またはバッファのローカル変数)をどのように変更しても、TABボタンは常に同じ動作をします。

  1. 上にテキストがない場合はインデントする8スペース
  2. 前の行にテキストがある場合は、2番目の単語の先頭までインデントします

Emacs は大好きですが、これはイライラします。前の行にテキストがない場合に、Emacs で少なくとも 4 スペースインデントする方法はありますか?

ベストアンサー1

短い答え:

重要な点は、インデントするときに emacs に任意のものを挿入するように指示することです。これは、indent-line-function を変更することで行われます。タブを挿入するように変更してから、タブを 4 つのスペースに変更する方が、4 つのスペースを挿入するように変更するよりも簡単です。次の設定で問題は解決します。

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

説明:

からメジャーモードで制御されるインデント @ emacs マニュアル:

各メジャー モードの重要な機能は、編集中の言語に合わせてキーを適切にインデントするようにカスタマイズすることです。

[...]

indent-line-function 変数は、現在の行をインデントするために (および indent-region を呼び出すときなどのさまざまなコマンドによって) 使用される関数です。コマンド indent-according-to-mode は、この関数を呼び出すだけです。

[...]

多くのモードでは、デフォルト値は indent-relative です。

emacs マニュアルの indent-relative より:

インデント相対 前の非空白行の次のインデント ポイントの下までスペースを空けます。

[...]

前の非空白行に列ポイントの開始位置を超えるインデント ポイントがない場合は、代わりに「tab-to-tab-stop」が実行されます。

indent-line-function の値を insert-tab 関数に変更し、タブ挿入を 4 つのスペースとして設定するだけです。

おすすめ記事