如何将Emacs html-mode配置为像TextMate的默认HTML包一样?

Hun*_*ris 3 html emacs textmate

我的一个朋友正在考虑从TextMate切换到Emacs.他习惯于TextMate的默认HTML编辑模式,它具有4个空格的制表位并插入制表符(即默认情况下不会自动缩进).它还允许使用" Cmd-Shift->" 完成打开的HTML标记.有任何想法吗?

Tre*_*son 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)
Run Code Online (Sandbox Code Playgroud)

设置说明'my-html-mode-hook如下:

  • 将标签宽度设置为4
  • 强制插入标签(与空格相对)
  • 强制TAB键插入一个选项卡(默认情况下,它会绑定到缩进,而不仅仅是插入选项卡
  • 'sgml-close-tag 是为您插入关闭标记的命令,此设置可以获得所需的键绑定

我有一点大脑冻结,无法弄清楚让TAB密钥插入TAB字符的简单方法,所以我写了自己的.我不知道为什么绑定'self-insert-command不起作用(这是普通键绑定的).

最后一行只是将设置功能添加到'html-mode-hook.键绑定实际上只需要运行一次(与每次启用html模式相反),但这比使用更容易阅读'eval-after-load.它的用途留给读者练习.