EmacsはインデントにTabを使用します。

EmacsはインデントにTabを使用します。

Emacsがグローバルにコードをインデントするときにスペースの代わりにタブだけを使用する方法はありますか?私はtabifyコマンドを知っています。私はデフォルト設定のようにタブとスペースを混在させるのではなく、タブを使用する自動インデントを好みます。

答え1

まあ、タブインデントを使用するには、それがデフォルトであることを確認indent-tabs-modeする必要があります。tしかし得るためにただタブでは、各行が倍数tab-width(デフォルト値8)にインデントされるようにインデントモードを調整する必要があります。たとえば、Cモードでは8に設定できますc-basic-offset

あるいは、tab-widthEmacsが各インデントレベルに達するためにスペースを使用する必要がないように、この値を小さい値に減らすこともできます。しかし、これを行うと、コードを処理する必要がある(標準の8文字のタブストップを使用する)他の誰もが迷惑になります。

もう一度考えてみてください。個人的に、私はタブインデントのあるコードを処理するのが面倒だと思います。特に8つの空白タブのように見えない場合はさらにそうです。 (最も悪いのは、コードの一部の行は空白を使用し、一部の行はタブを使用しますが、明らかに8つの空白タブではないことです)(setq indent-tabs-mode nil)

答え2

Emacsには、定義済みの複数のCインデントスタイルが付属しています。あなただけの文章を書いてくださいそのどれもあなたのニーズに合わない場合。 ~へ標準スタイルlinux、8つの列インデントがあり、幅が8のタブを使用する(Linuxカーネルソースコードに使用されるスタイル)を探しているようです。

この設定を次の項目に入れて、Cのデフォルトスタイルに設定できます.emacs

(setq c-default-style "linux")
(defun my-c-mode-hook ()
  (setq indent-tabs-mode t)
  (setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)

ただし、好みが他の人と共同作業するときは、これらの設定を使用しないでください。特にタブを使用すると敵になります。特定のファイルを特定のスタイルで保存するには、次を使用できます。ファイル変数Emacsでファイルを編集するすべての人が同じ設定を使用していることを確認してください。

/*
 * Local Variables:
 * c-file-style: "linux"
 * indent-tabs-mode: t
 * tab-width: 8
 * End:
 */

プロジェクト全体に同様にインデントされたCファイルがある場合は、以下を使用してください。ディレクトリ変数すべてのファイルを汚染する代わりに。.dir-locals.el次の内容を含むファイルを作成します。

((c-mode . ((c-file-style . "linux")
            (indent-tabs-mode . t)
            (tab-width . 8))))

答え3

タブは私を悩ませますが、他の人のコードで作業できるように、インデントにタブだけを使用するようにemacsを取得する方法を理解する必要があります。これは私にとって効果的です。

(defun tmp/change-indent ()
  (interactive)
  (setq indent-tabs-mode t)
  (setq tab-width 2))

何かを台無しにする前にTabキーを押すと、自動的に2つの列がインデントされることがわかりました。 2列オフセットと一致するように "tab-width"を設定すると、emacsが自動書式設定を実行するときにタブ文字を使用できます。私はnxmlモードで作業していましたが、これはどのモードでも機能すると思います。

関連情報