3

私の友人が、TextMate から Emacs への切り替えを検討しています。彼は、TextMate のデフォルトの HTML 編集モードに慣れています。このモードには、4 つのスペースのタブ ストップがあり、タブ文字が挿入されます (つまり、デフォルトでは自動インデントは行われません)。また、" " で HTML の開始タグを補完することもできますCmd-Shift->。何か案は?

4

2 に答える 2

9

私はこれらの設定がうまくいくはずだと思います:

(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。その使用は、読者への演習として残されています。

于 2009-06-18T15:27:44.650 に答える
2

特に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 以外の場合は使用しないでください。予測できない結果になるだけです。

于 2009-06-18T15:37:20.777 に答える