1

У меня есть файл CSS с такими строками:

.exhibit-page-nav {list-style:none; float: left; padding: 1em 0; width: 100%; border-top: 1px solid #c7b5a2;}

но я хочу, чтобы это выглядело так:

.exhibit-page-nav {
    list-style:none; 
    float: left; 
    padding: 1em 0; 
    width: 100%; 
    border-top: 1px solid #c7b5a2;
}

Есть ли способ написать макрос vim, чтобы сделать это?

1 ответ1

3

@ user137369 комментарий на месте, но вы попросили макрос vim ...

Макрос не нужен, если вы хотите отформатировать только одну строку: достаточно простой замены. Но вам, возможно, придется сделать то же самое упражнение снова в будущем; в этом случае вы можете записать его как макрос или даже сохранить как команду или отображение.

Итак ... допустим, вы хотите сохранить это как макрос:

qx              " start recording in register x
:s/[;\{]/\0\r/g " the substitution that does the formatting
=i{             " indent the whole thing nicely
q               " stop recording

После этого вы можете применить макрос, поместив курсор на строку и нажав:

@x

Подстановка означает «заменить любое ; или { ([;\{]) на себя (\0), за которым следует возврат каретки (\r)».

Теперь предположим, что у вас есть блок из дюжины таких строк, применить макрос ко всем из них так же просто, как выбрать их и набрать:

:'<,'>norm @x

Смотрите :help :normal .

Если у вас много таких строк в файле и вы можете определить общий шаблон, скажем ;} , другой вариант (который мне очень нравится) - использовать команду :global:

:g/;\}/norm @x

Смотрите :help :global .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .