回答:
まあ、タブとインデントに、あなたはそれを確保したいと思うindent-tabs-mode
であるt
(デフォルト値です)。ただし、タブのみを取得するには、インデントを実行しているモードを調整して、すべての行がtab-width
(デフォルトでは8)の倍数でインデントされるようにする必要があります。たとえば、Cモードでは、c-basic-offset
8に設定してみてください。
または、tab-width
Emacsが各レベルのインデントに到達するためにスペースを使用する必要がないように、より小さな値に減らすことができます。しかし、それを行うと、コードで作業しなければならない(そして標準の8文字のタブストップを使用する)だれもが迷惑になります。
再考することをお勧めします。個人的には、タブでインデントされたコードで作業するのは面倒です。特に、8つのスペースタブのように見えない場合は特にそうです。(最も悪いのは、一部の行がスペースを使用し、一部の行がタブを使用するコードであり、明らかに8つのスペースタブではありません)(setq indent-tabs-mode nil)
。
Emacsには、Cのインデント用に定義済みのスタイルがいくつか用意されています。ニーズに適したスタイルがない場合は、独自のスタイルを作成できます。標準スタイルの中で、探しているようですlinux
(Linuxカーネルソースで使用されているスタイル)。インデントは8カラムで、幅8のタブ文字を使用しています。
これらを次のように配置することで、これらの設定を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))))
タブは私を困らせますが、他の誰かのコードで作業できるように、emacsがインデントにタブのみを使用する方法を理解する必要がありました。これが私のために働いたものです:
(defun tmp/change-indent ()
(interactive)
(setq indent-tabs-mode t)
(setq tab-width 2))
何かをいじる前に、Tabキーを押すと、2列ずつ自動的にインデントされることに気付きました。「tab-width」を2列のオフセットと一致するように設定すると、emacsは自動フォーマットを行うときにタブを使用できました。私はnxmlモードで作業していましたが、これはどのモードでも機能するはずです。