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


person mrm8    schedule 09.05.2011    source источник
comment
Возможное решение: stackoverflow.com/questions/459478/   -  person namuol    schedule 10.05.2011


Ответы (2)


Самое первое, что вам нужно сделать, это попробовать 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>, чтобы перейти к следующему / предыдущему полю.

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

Во-вторых, текстовые объекты и 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>

Хо да!

Серьезно, Vim великолепен.

person romainl    schedule 10.05.2011
comment
+1 За упоминание Sparkup. Я уже давно хотел попробовать это. - person Michael Berkowski; 10.05.2011
comment
@Michael - Спасибо. Я резервирую SparkUp для очень конкретных задач, когда я вынужден использовать огромные вложенные таблицы, такие как информационные бюллетени и тому подобное. Где у вас жесткая и предсказуемая структура. Когда я работаю более свободно, мне удобнее пользоваться SnipMate. Но я выздоравливающий пользователь TextMate, ваш опыт может отличаться. - person romainl; 10.05.2011

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

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

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

person Michael Berkowski    schedule 09.05.2011
comment
set autoindent? Но что с C? Будет ли этот плагин filetype обрабатывать эти случаи за меня? - person mrm8; 10.05.2011