Emacs は自動的に行をインデントしません。例えば:
int main() {
int a;
int b; // this line still don't indent with int a
}
では、Emacs で行をインデントする方法は? さらに、入力するたびに{
、Emacs を他の IDE (eclipse、netbean ...) のように自動的にタブをインデントする方法を教えてください。
Emacs は自動的に行をインデントしません。例えば:
int main() {
int a;
int b; // this line still don't indent with int a
}
では、Emacs で行をインデントする方法は? さらに、入力するたびに{
、Emacs を他の IDE (eclipse、netbean ...) のように自動的にタブをインデントする方法を教えてください。
Cコードのみを自動インデントしたい場合は、これを.emacs
ファイルに入れます:
(defun enable-newline-and-indent ()
(local-set-key (kbd "RET") 'newline-and-indent))
(add-hook 'c-mode 'enable-newline-and-indent)
別の方法として、次のようにすべてのプログラミング モードでこの動作を有効にすることもできます (Emacs 24 以降でのみ機能します)。
(defun enable-newline-and-indent ()
(local-set-key (kbd "RET") 'newline-and-indent))
(add-hook 'prog-mode 'enable-newline-and-indent)
さらに別のオプションは、Emacs 24 で導入されたelectric-indent-mode
andの使用です。これらは基本的に、 andのようないくつかの文字の後に改行またはインデントをトリガーします。electric-layout-mode
;
{
Emacs の通常の動作では、改行を文字どおりに挿入するためにRET( ) キーを予約し、入力とインデントには( + ) を使用します。これは、行の再インデントを引き起こす可能性のある他のキーの範囲にも当てはまります。伝統的に、再インデントを引き起こすコマンドには、名前の一部に「電気」が含まれています。たくさんの「電気」コマンドがあります。それらを見つけるには、C ソースを編集するときに次のようにします。EnterC-jCtrlJc-mode
C-h b( Ctrl+ H B) - バッファ内のすべてのキー バインディングを一覧表示します。
M-s o( AltPC またはOptionMac + S O) - コマンドを呼び出しoccur
ます。代わりに、M-xoccur
.
occur
入力します (前のステップの後、ポイントはミニバッファーにあるため、そのまま入力を続けます)。次のような内容の追加のバッファが開きます。
12 matches for "electric" in buffer: *Help*
706:C-d c-electric-delete-forward
709:# c-electric-pound
710:( .. ) c-electric-paren
711:* c-electric-star
712:, c-electric-semi&comma
713:/ c-electric-slash
714:: c-electric-colon
715:; c-electric-semi&comma
716:{ c-electric-brace
717:} c-electric-brace
718:DEL c-electric-backspace
726:C-c C-l c-toggle-electric-state
これは、いくつかの「電気的」アクションを実行するすべてのコマンドとそれらに割り当てられたキーをリストします。それらのいずれかにポイントを移動し、C-h f( Ctrl+ H F)を押すとRET、コマンドが正確に何をするかを説明するヘルプ ページが開きます。たとえば、ヘルプをリクエストすると、次のc-electric-colon
ように表示されます。
c-electric-colon is an interactive compiled Lisp function in
`cc-cmds.el'.
(c-electric-colon ARG)
Insert a colon.
If `c-electric-flag' is non-nil, the colon is not inside a literal and a
numeric ARG hasn't been supplied, the command performs several electric
actions:
(a) If the auto-newline feature is turned on (indicated by "/la" on
the mode line) newlines are inserted before and after the colon based on
the settings in `c-hanging-colons-alist'.
(b) Any auto-newlines are indented. The original line is also
reindented unless `c-syntactic-indentation' is nil.
(c) If auto-newline is turned on, whitespace between two colons will be
"cleaned up" leaving a scope operator, if this action is set in
`c-cleanup-list'.
[back]
ハイパーリンクのように見えるアイテム (通常は下線が引かれているか、視覚的な外観が異なり、テキストの残りの部分) にポイントを移動し、 を押すと、ここからマニュアルを読み続けることができますRET。C-bモードでとC-fを使用し*Help*
て、既にアクセスしたページ間を前後に移動できます (またはポイントを[back]
または[forward]
ボタンに移動して を押しますRET)。