Есть ли * хороший * HTML-режим для emacs?

11794
Carson Myers

Я люблю Emacs,

и я хочу сделать в нем свою работу по веб-программированию,
но я не могу найти способ заставить его правильно редактировать HTML.

Я имею в виду, что это серьезно ужасно.

Это будет хорошо работать с HTML, но не PHP, JavaScript и т. Д.

Я попытался получить html-helper-mode ... Я скачал его, поместил в / usr / local / share / emacs / site-lisp и добавил в мой файл .emacs:

(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t) (setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist)) 

скопировано и вставлено с какого-то сайта (я не знаю, elisp).
это просто, ничего не выдвигает на первый план.

Я попытался загрузить целую кучу режимов и использовать какой-то другой режим, чтобы связать их вместе, но безрезультатно.

Emacs настолько хорош во всех отношениях - почему он не может выполнить простую задачу редактирования веб-страниц? Я имею в виду, что это довольно стандартная вещь для редакторов в наши дни.

Итак, кто-нибудь знает, как это сделать?

23

5 ответов на вопрос

34
fxbois

I had the same problem as you so I decided to write web-mode.

enter image description here

Web-mode.el is a major mode for Emacs that is intended for editing mixed web templaces (HTML with Java/JSP, PHP, CSS, JavaScript).

It doesn't rely on any other mode. It does syntax highlight et indenting according to the code block type. I've written a little HOWTO page on

About

  • web-mode.el is a major-mode for editing web templates (HTML with PHP, Java/JSP, JavaScripts, CSS styles).
  • web-mode.el is will never be a full featured PHP or JS mode. (We don’t encourage multi-lines blocs of code in templates !).

Native Features

  • smart indentation (according to the context : HTML, PHP, Java/JSP, JavaScript or CSS)
  • code navigation : C-c C-n between opening and closing HTML tag or between PHP controls > - if ... else ... endif, for ... endfor
  • HTML tag autoclosing (after
  • syntax highlighting (according to the type of bloc)
  • snippet insertion C-c C-i (auto indented, aware of text selection)
  • auto-inserts (ex. ?> after <?php)
Иди, скажи, это спасает мой день ... Спасибо @fxbois! Я люблю это. Наконец, я могу получить отступ смеси между html, css, java и т. Д. Можно ли это сделать с помощью Python? swdev 11 лет назад 0
@swdev не могли бы вы открыть на github вопрос об этом запросе совместимости с python. Могли бы отправить ссылку на документацию по синтаксису шаблона и пример такого шаблона. fxbois 11 лет назад 0
Выглядит аккуратно, но, похоже, использует regexp для разбора HTML, вместо того, чтобы иметь настоящий парсер, такой как psgml ... David N. Welton 11 лет назад 0
Что вы подразумеваете под реальным парсером? Я просматриваю документ, чтобы найти теги, которые начинаются с <и заканчиваются> и т. Д. И т. Д. Нашли ли вы какие-либо ограничения? Если вы найдете какие-либо, не стесняйтесь сообщать о проблемах на репозитории GitHub fxbois 11 лет назад 3
4
luapyad

Вы проверили Emacs Wiki HTML- страницу? NXHTML, в частности, выглядит полезным.

это выглядит полезным, но очень болезненно в использовании ... он загружается медленно, не делает отступ правильно, уродлив, работает медленно, выделяет все красным, а затем делает все курсивом и просто, больно ... Carson Myers 15 лет назад 4
Я использовал nxhtml с успехом. Все цвета шрифта и курсив можно контролировать, настраивая лица Doug Harris 15 лет назад 1
3
Pinochle

Я был недоволен доступными режимами, но недавно я обрел счастье, используя обычный старый, html-modeдополненный yasnippetи tidy.el. Как уже упоминалось в других ответах, режим nxhtml полезен, если вы пишете xhtml.

Если вы хотите получить выделенный php и javascript, вы можете посмотреть mmm-mode, что позволит вам запускать несколько основных режимов одновременно. Я никогда не использовал его, так что я не знаю, кто обрабатывает конфликтующие сочетания клавиш и т. Д., Поэтому вы должны будете чувствовать себя там.

3
skwee rell

Дайте несколько режиме Интернет попробовать, это второстепенный режим разработан с веб - редактирования в виду, он выбирает соответствующий основным, когда точка движется вокруг.

0
stsquad

Я также использую режим nXhtml для редактирования в смешанном режиме, так как несколько режимов не работают правильно. Это было немного нелегко, но последние сборки оказались полезными. Я бегу с Emacs 23 FWIW.