私の友人が、TextMate から Emacs への切り替えを検討しています。彼は、TextMate のデフォルトの HTML 編集モードに慣れています。このモードには、4 つのスペースのタブ ストップがあり、タブ文字が挿入されます (つまり、デフォルトでは自動インデントは行われません)。また、" " で HTML の開始タグを補完することもできますCmd-Shift->
。何か案は?
2 に答える
私はこれらの設定がうまくいくはずだと思います:
(defun my-html-mode-hook ()
(setq tab-width 4)
(setq indent-tabs-mode t)
(define-key html-mode-map (kbd "<tab>") 'my-insert-tab)
(define-key html-mode-map (kbd "C->") 'sgml-close-tag))
(defun my-insert-tab (&optional arg)
(interactive "P")
(insert-tab arg))
(add-hook 'html-mode-hook 'my-html-mode-hook)
の設定の説明は次の'my-html-mode-hook
とおりです。
- タブ幅を 4 に設定します
- タブの挿入を強制する (スペースではなく)
- キーにタブを挿入するように強制し
TAB
ます(デフォルトでは、タブの挿入だけでなく、インデントを行うようにバインドされています 'sgml-close-tag
は、終了タグを挿入するコマンドであり、この設定により、必要なキーバインドが取得されます
少し頭が固まっていて、TAB
キーに TAB 文字を挿入する簡単な方法がわからなかったので、自分で書きました。へのバインドが機能しなかった理由がわかりません'self-insert-command
(これが通常のキーのバインド先です)。
最後の行は、 setup 関数を'html-mode-hook
. キー バインドは実際には 1 回だけ実行する必要があります (html モードが有効になるたびに実行するのではなく) が、これは を使用するよりも少し読みやすくなります'eval-after-load
。その使用は、読者への演習として残されています。
特にemacsのHTMLモードについてはわかりませんが、一般的な編集については答えることができます:
デフォルトでは、Emacs は自動インデントしないので、ここでは何もしません。
Emacs は、明示的に変更を依頼しない限り、タブ文字を保持します ( および を確認してください
tabify
)untabify
。それらの幅は、バッファローカルtab-width
変数によって決定されます。M-x set-variable
、(setq...)
、自由にカスタマイズ。indent-line-function
に設定しtab-to-tab-stop
、 に設定し、 に設定tab-stop-list
する(4 8 12 16...)
ことindent-tabs-mode
で、タブキーで必要な動作を得ることができるはずですt
。
この設定indent-tabs-mode
により、Emacs はインデント時にタブ文字を挿入できます。は、行の特定の位置にのみ移動するインデントの形式であり、4 の倍数にtab-to-tab-stop
設定することで、タブ文字の予想される動作に一致するように設定しました。tab-stop-list
完了について、私の筋肉の記憶が教えてくれるのは「C-c C-e
」だけですが、どのメジャーモードで進むべきかははっきりと覚えていません。リストに表示されている最も近いものはsgml-close-tag
、にバインドされていますC-c /
ちょっとした政治: タブ文字を使用しないでください。特に、幅が 8 以外の場合は使用しないでください。予測できない結果になるだけです。