Вопрос по css, vim, sorting – Как сделать так, чтобы vim сортировал правила CSS по алфавиту в одну строку?

4

Источник:

.foo { line-height: 150px; font-size: 24px; clear: both; }

vim magic here, probably something visual selection based

Результат:

.foo { clear: both; font-size: 24px; line-height: 150px; }

Что вы предлагаете для vim magic part?

Хорошая вещь всем, вот почему я так люблю. Примечание:stackoverflow.com/questions/3050797/… похоже, связано с многострочным CSS. lkraav

Ваш Ответ

3   ответа
2

Очень быстрый ответ:

:s/[{;] /\0\r
vi{
:!sort
va{
J
Вот как я узнал, что «J»; может работать на выбор. Ухоженная!
6
:s/\([{;]\)\s*/\1\r/g | '[+1,']sort | '[,']join

Разбить линию на{ или же; чтобы вывести каждое правило в отдельную строку,:sort их (пропуская первую строку, содержащую определение CSS), затем соедините их вместе.

Вы можете сделать это немного короче, используяs/[{;]/&\r для вашей замены. В любом случае, пробелы в конечном итоге удаляются.
Лучше, чем у меня на каждом счету.
1

Еще один вкладыш:

s/{\s*\zs.\{-}\ze\s*}/\=join(sort(split(submatch(0), '\s*;\s*')), '; ').';'

На этот раз мы используемsub-replace-\=и список функций манипуляции (sort(), split(), а такжеjoin())

Похожие вопросы