首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置Emacs html-mode,使其行为类似于TextMate的默认HTML包?

如何配置Emacs html-mode,使其行为类似于TextMate的默认HTML包?
EN

Stack Overflow用户
提问于 2009-06-18 13:56:28
回答 2查看 2.3K关注 0票数 3

我的一个朋友正在考虑从TextMate转到Emacs。他习惯了TextMate的默认HTML编辑模式,该模式有4个空格的制表位和插入制表符(即默认情况下不自动缩进)。它还允许使用"Cmd-Shift->“完成打开的HTML标签。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-18 15:27:45

我认为这些设置应该可以做到这一点:

代码语言:javascript
复制
(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键插入制表符(缺省情况下,它绑定为进行缩进,而不仅仅是插入

是为您插入结束标记的命令,此设置将为您提供所需的键绑定

我的大脑有点僵硬,想不出让TAB键插入制表符的简单方法,所以我写了自己的。我不知道为什么绑定到'self-insert-command不起作用(这就是普通的键被绑定的原因)。

最后一行只是将设置函数添加到'html-mode-hook。键绑定实际上只需要运行一次(而不是每次启用html模式时),但这比使用'eval-after-load更容易阅读。它的用法留给读者作为练习。

票数 9
EN

Stack Overflow用户

发布于 2009-06-18 15:37:21

我不太了解emacs的HTML模式,但我可以回答有关一般编辑的问题:

默认情况下,Emacs不会自动缩进,所以这里不做任何事情。

  • Emacs保留制表符,除非您明确要求更改它们(请查看tabifyuntabify)。它们的宽度由buffer-local 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.

,您应该能够使用Tab键获得您想要的行为

设置indent-tabs-mode允许Emacs在缩进时插入制表符。tab-to-tab-stop是一种缩进形式,它只缩进到行中的特定位置,我们通过将tab-stop-list设置为4的倍数来设置它,以匹配制表符的预期行为。

关于完成,我的肌肉记忆告诉我的唯一一件事是"C-c C-e",但我不确定它应该与哪种主要模式相匹配。我在列表中看到的最接近的是绑定到C-c /sgml-close-tag

一点政治因素:不要使用制表符,特别是当你使用的宽度不等于8的时候。这只会导致不可预知的结果

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1012768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档