Easier Editing Tailwind with Vim Macro
Tailwind is cool, but it’s hard to edit strings.
Instead, use classnames to split them while editing.
className={cx([
'font-bold',
'leading-10',
'mb-2',
'mr-0',
'mt-2',
'text-3xl-large',
'tightest',
'md:col-start-1',
'md:row-start-1',
'md:self-end',
'md:mb-0',
'xl:self-start',
'xl:mt-0',
])}
When you’re done, convert them to a string.
className="font-bold leading-10 mb-2 md:col-start-1 md:mb-0 md:row-start-1 md:self-end mr-0 mt-2 text-3xl-large tightest xl:mt-0 xl:self-start"
You can write a webpack plugin or, if you have things to do, use a Vim macro.
f[v%:s/\%V\/\/.*//ge^Mvi[:sort u<cr>va[Jva[:s/\%V', '/ /g^MV:s/\%V{cx(\[ '/"^MV:s/\%V', ])}/"^M:w^M
The ^M above are actually the CR. I just added them separately here cause I can’t get MD to work with it.
http://vimdoc.sourceforge.net/htmldoc/digraph.html#digraph-table
Explanation
f[- find the next [v%- visually select […]:s/\%V\/\/.*//ge^M- delete//..., ignoring unfoundvi[- select inside […]:sort u^M- sort uniquelyva[- visually select […]J- join into one lineva[- visually select […] (redundant, but 🤷♂️:s/\%V', '/ /g^M- substitute in selection, essentially joining array into stringV- select the line:s/\%V{cx(\[ '/"^M- replace the first partV- select the line:s/\%V', ])}/"^M- replace the end:w^M- write file