1. ホーム
  2. emacs

[解決済み] EmacsでC言語のコードを自動インデントするにはどうしたらいいですか?

2022-02-01 04:02:15

質問

emacsを使い始めて間もないのですが、リターンキーを押してもインデントしない傾向があり、イライラしています。C-jを押せばそうなるのは分かっているのですが、その習慣が身につきません。どうしてもできないのです。リターンを押さないといけないのに、いちいちタブを引き直すのが嫌なんです。

オプションでCモードフック、C++モードフックなどを探し、2つのキーマッピング(10と13、0Aと0Dはアセンブリでよく使うのでCR/LFと記憶していました)を定義していました--1つは " と書いてあったので考えました。 (lambda nil (define-key lisp-mode-map [13] (quote newline-and-indent)) で、もう一方は同じだが (quote newline) の代わりに、末尾に-and-indentをつけるだけで、うまくいくと思ったのです。

しかし、そうではありません。設定し、保存し、試してみましたが、無駄でした。emacsを再起動してもダメでした。どうしたらインデントできるようになりますか?emacsは基本的なニーズを満たすために設定するためにlispの学位を必要とするのはひどく非常識です。

また、副次的な質問として、コピーして クリップボードは? キリングやヤンクは便利ですが、どこかに貼り付けたいときにいちいちedit->copyするのが面倒です。

-- EDIT --

OK、次の行を.emacsに入れたらうまくいきました。

(add-hook 'c-mode-common-hook (lambda ())
      (local-set-key (kbd "RET") 'newline-and-indent)))

お世話になりました

解決方法を教えてください。

をご覧ください。 emacswiki - 自動インデント

そこで提案されているように、次のコードを.emacsに記述してください。

(defun set-newline-and-indent ()
  (local-set-key (kbd "RET") 'newline-and-indent))
(add-hook 'c-mode-hook 'set-newline-and-indent)

C Default Stylという変数をカスタマイズすることができます。emacsのOptions->Customize Emacs->Specific Optionで、c-default-styleと入力し、好みのスタイルに設定してください。こうすることで、TABキーを押す必要がなくなります。行頭から入力し、";" を押すと、自動的にインデントされます。

ご参考になれば幸いです。