vim Tabularize: как игнорировать строки, содержащие фигурные скобки - PullRequest
4 голосов
/ 23 июля 2011

Рассмотрим плагин vim Tabularize для выравнивания свойств правил CSS.например,

body {
  margin: 0;
  padding: 0;  
  font-family: arial, verdana;
}

В vim с курсором внутри правила vi{ :Tab /:\zs получается

body {
  margin:      0;
  padding:     0;  
  font-family: arial, verdana;
}

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

По :%Tab \:\zs имя правила учитывается для ширины левого столбца, что нежелательно.

НекоторыеПравила CSS содержат несколько :, поэтому мой вопрос как игнорировать строки, содержащие фигурные скобки?

Ответы [ 2 ]

3 голосов
/ 23 июля 2011

Попробуйте команду, указанную ниже.

:%g/:.*{/s/^/:/ | exe'%Tab/^[^:]*:\zs' | %s/^:\s*//

Вы можете сопоставить эту команду ярлыку или запустить его автоматически во время сохранения CSS-файлов.

:au BufWrite *.css %g/:.*{/s/^/:/ | exe'%Tab/^[^:]*:\zs' | %s/^:\s*//
1 голос
/ 23 июля 2011

Глобальная команда может быть использована здесь.У меня нет Tabularize, поэтому моя версия просто делает отступ для всех блоков css:

:%g/^.*{/+ | .,/}/->

Последняя команда после '|'команда ex mode для отступа блока от текущей позиции (на одну строку ниже каждой открывающей скобки) до строки над закрывающей скобкой.Исходя из того, что вы сказали, я ожидал, что это сработает, но я не пробовал:

:%g/^.*{/+ | Tab /:\zs
...