Подтвердить что ты не робот

Отказ от раздражения CSS в Vim

Я переехал из TextMate в Vim в последнее время, и мне очень нравится этот переключатель. Тем не менее, у меня есть зуд относительно того, как Vim обрабатывает отступы внутри фигурных скобок, используя синтаксис CSS. Я использую simple_pairs.vim, который может или не может иметь какое-то отношение к моей проблеме, но я так не думаю, так как все хорошо работает в PHP, JavaScript и т.д. Позвольте мне объяснить...

Я обычно группирую свои правила CSS по контексту с помощью отступов, например:

ul#nav {
  margin: 10px;
}
  ul#nav li {
    float: left;
    margin-right: 4px;
  }

Это означает, что при вводе моего правила ul#nav li, за которым следует { (который автоматически вставляет соответствующий }) и нажмите enter, я хочу, чтобы закрывающая фигурная скобка была на том же уровне отступов, что и ul#…, но вместо этого я получаю что-то вроде этого:

ul#nav {
  margin: 10px;
}
  ul#nav li {
}

Итак, я должен отложить дополнительные шаги вручную. Как я уже сказал, делать то же самое в PHP, JavaScript и т.д., Отлично работает. Кто-нибудь знает, как я могу это исправить? Я не понимаю достаточно файлов определения синтаксиса Vim для меня, чтобы понять, что в файле синтаксиса PHP заставляет его работать, и переносить его на CSS один... Спасибо.

4b9b3361

Ответ 1

Я нашел очень хороший код отступа для вложенных фигурных скобок здесь:

https://gist.github.com/762326/bcbd35239db7f26447f1c2323037d20a5219471d

Вы можете сохранить его в .vim/indent/css.vim, и он сделает гораздо лучшую работу с отступом CSS, чем по умолчанию.

Кроме того, он работает и с файлами .less, но вам может потребоваться связать их с ним в файле .vimrc.

script в github - тот же mantainer, что и официальный css.vim, всего на 6 лет новее. У них есть несколько разных линий.

Ответ 2

Я сделал это для файлов css:

au BufEnter *.css set nocindent
au BufLeave *.css set cindent

У меня не было набора smartindent, но вы также можете добавить это.

Это говорит о том, что когда вы вводите буфер файла .css, вы должны отключить cindent, и вы должны установить его обратно, когда вы покидаете буфер.

Ответ 3

Это связано с cindent и smartindent. Один из них вызывает такое поведение.

Я забыл, какой из них (возможно, оба они?), но я удалил их из моего файла ~/.vimrc и сохранил только autoindent