Как редактировать HTML в Vim?

Я новичок в Vim, и я пытаюсь привыкнуть к этому. Я только что создал файл .vimrc и получил Vim для отображения номеров строк и инкрементного поиска. Я также включил подсветку синтаксиса. Теперь я хочу, чтобы все упростилось, чтобы упростить запись HTML. Я искал html.vim в /usr/share/vim и нашел это:

/usr/share/vim/vim72/syntax/html.vim
/usr/share/vim/vim72/ftplugin/html.vim
/usr/share/vim/vim72/indent/html.vim

Теперь, что мне нужно сделать, чтобы включить автоматическое отступы HTML? Скопировать эти файлы в ~/.vim? Symlink их? Или Vim автоматически загружает их из /usr/share/vim/? (Он уже выделяет синтаксис HTML, поэтому я думаю, что это возможно - но он не делает HTML-отступ HTML) Я слышал, что set autoindent в .vimrc будет делать трюк, но что с .c файлами? Я думал, что они нуждаются в set cindent, но не работает ли с HTML?

Ответ 1

Самое первое, что вам нужно сделать, это попробовать vimtutor и завершить его пару раз. Как только основы будут покрыты, вы можете начать играть с плагинами...

SnipMate вдохновлен фрагментами TextMate и/так красив, у него есть множество фрагментов HTML по умолчанию, и очень легко добавить свои своя. Чтобы использовать его, введите div, затем нажмите Tab, чтобы получить:

<div id="|">

</div>

с кареткой между "", готовой для ввода идентификатора; снова нажмите Tab, чтобы переместить курсор на пустую строку:

<div id="myId">
    |
</div>

Красивая. Однако многие редакторы имеют эту функцию.

Если у вас много HTML для написания - скажите несколько электронных писем/бюллетеней в день - другой плагин под названием SparkUp позволяет вам производят сложный HTML только с несколькими нажатиями клавиш и некоторыми знаниями CSS. Вы начинаете с ввода чего-то вроде:

table[id=myTable] > tr*3 > td*2 > img

тогда вы нажмете <C-e> (Ctrl E), чтобы получить:

<table cellspacing="0" id="myTable">
  <tr>
    <td>
      <img src="|" alt="" />
    </td>
    <td>
      <img src="" alt="" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="" alt="" />
    </td>
    <td>
      <img src="" alt="" />
    </td>
  </tr>
  <tr>
    <td>
      <img src="" alt="" />
    </td>
    <td>
      <img src="" alt="" />
    </td>
  </tr>
</table>

с каретой внутри первой пустой "". Нажмите <C-n> и <C-p>, чтобы перейти к следующему/предыдущему полю.

Magical. Однако плагин доступен для большего количества редакторов.

Вторые текстовые объекты и Surround.vim, которые невероятно полезны.

Еще одна интересная функция - режим визуального блока (:help visual-block), где вы можете выбрать столбцы текста. Скажите, что у вас есть:

<ul>
    <li><p>My text doesn't mean anything</p></li>
    <li><p>My text doesn't mean anything</p></li>
    <li><p>My text doesn't mean anything</p></li>
    <li><p>My text doesn't mean anything</p></li>
</ul>

поместите курсор на > первого <li>, затем нажмите <C-v> и переместите курсор вниз на четвертый <li>. Нажмите I (капитал I), чтобы войти в режим INSERT непосредственно перед > и введите class="myElement", затем <Esc>, чтобы получить:

<ul>
    <li class="myElement"><p>My text doesn't mean anything</p></li>
    <li class="myElement"><p>My text doesn't mean anything</p></li>
    <li class="myElement"><p>My text doesn't mean anything</p></li>
    <li class="myElement"><p>My text doesn't mean anything</p></li>
</ul>

Хо, да!

Серьезно, Вим велик.

Ответ 2

Взгляните на плагин AutoCloseTag, чтобы закрыть теги при их вводе. И set autoindent должен обрабатывать отступы HTML для вас.

Также вы должны прочитать документы в :help text-objects, чтобы узнать об использовании внутреннего и внешнего тегов. Например, в обычном режиме вы можете сделать c i t, чтобы изменить текст внутри текущего тега. Или в визуальном режиме a t будет расширяться визуальный выбор, чтобы инкапсулировать тег вокруг курсора.

Наконец, просмотрите плагин Surround.vim, который может окружать выделенный или текстовый объект тегом или изменить тег вокруг него.