VSCode html автоформат на шаблоне django

Я люблю VSCode на save autoformat, пока он не испортил мой код шаблона.

он неправильно форматирует мой синтаксис шаблона django в одну строку кода (иногда очень длинную строку). Поэтому вместо того, чтобы иметь этот код

{% for row in 'ABCDEFGH' %}
<tr>
  {% for col in '123456789012345' %}
    <td>
      {% with forloop.counter|stringformat:"s" as counter %}
        {% with row|add:counter as seat_num %}
          {% if seat_num not in oc_seats %}
            <input type="checkbox" value="{{ row }}{{ forloop.counter }}" name="seats">
          {% endif %}
          <br> {{ seat_num }} 
        {% endwith %}
      {% endwith %}
     </td>    
   {% endfor %}
</tr>
{% endfor %}

в конечном итоге у меня есть этот код

{% for row in 'ABCDEFGH' %}
<tr>
  {% for col in '123456789012345' %}
  <td style="text-align: center; border: 1px solid #aaa;">
    {% with forloop.counter|stringformat:"s" as counter %} {% with row|add:counter as seat_num %} {% if seat_num not in oc_seats %}
    <input type="checkbox" value="{{ row }}{{ forloop.counter }}" name="seats"> {% endif %} {{ seat_num }} {% endwith %} {% endwith %}
  </td>
  {% endfor %}
</tr>
{% endfor %}

Я попытался отключить формат при сохранении, изменив настройки пользователя на {"editor.formatOnSave": false} но все равно не повезло.

есть ли плагин или настройки, которые я могу использовать, чтобы сделать это лучше работать?

PS: Я использую VSCode версии 1.9 на Sierra MacOSx

2 ответов


вы можете отключить форматирование html по умолчанию, goto File > Preferences > User или Workspace Settings, в настройках HTML вы найдете:

// Enable/disable default HTML formatter (requires restart)
  "html.format.enable": true,

Я думаю, что VSCode использует js-beautify в качестве форматирования по умолчанию, вы можете использовать украсить расширение чтобы переопределить его настройки .jsbeautifyrc в каталоге проекта


имел ту же проблему, нашел сообщение, где человек отключил расширение JS-CSS-HTML Formatter (https://stackoverflow.com/a/42100808/4812548) и это исправило проблему. Протестировано на моем, и, похоже, тоже сработало. Надеюсь, это поможет