我的一个朋友正在考虑从TextMate转到Emacs。他习惯了TextMate的默认HTML编辑模式,该模式有4个空格的制表位和插入制表符(即默认情况下不自动缩进)。它还允许使用"Cmd-Shift->“完成打开的HTML标签。有什么想法吗?
发布于 2009-06-18 15:27:45
我认为这些设置应该可以做到这一点:
(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中的设置说明如下:
TAB键插入制表符(缺省情况下,它绑定为进行缩进,而不仅仅是插入是为您插入结束标记的命令,此设置将为您提供所需的键绑定
我的大脑有点僵硬,想不出让TAB键插入制表符的简单方法,所以我写了自己的。我不知道为什么绑定到'self-insert-command不起作用(这就是普通的键被绑定的原因)。
最后一行只是将设置函数添加到'html-mode-hook。键绑定实际上只需要运行一次(而不是每次启用html模式时),但这比使用'eval-after-load更容易阅读。它的用法留给读者作为练习。
发布于 2009-06-18 15:37:21
我不太了解emacs的HTML模式,但我可以回答有关一般编辑的问题:
默认情况下,Emacs不会自动缩进,所以这里不做任何事情。
tabify和untabify)。它们的宽度由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的时候。这只会导致不可预知的结果
https://stackoverflow.com/questions/1012768
复制相似问题