The other day I was putting together an ad-hock eslint configuration
where I had just one JS file for a prototype page. I was inside a git
repo and I didn’t want to have additional files, so I kind of resisted
the idea to have a .eslintrc file, but I can have a Makefile — I
have that in my ~/.gitignore, so I can easily add one here and have
all the messy bits hidden inside it:
default: lint
lint:
eslint checkout.js
So now I can say make or m and have my JS file linted. Cool, but how
do I add eslint rules? It turnes out that it
allows me
make all the configuration I want by passing arguments, so to add one
rule at a time by passing them as separate --rule arguments:
eslint \
--rule 'comma-dangle: [2, "never"]' \
--rule 'no-cond-assign: 2' \
...
checkout.js
Messy, but good enough for this context. After typing in 5 of those
lines of --rule 'something' I was wondering how can I automate this. A
vim macro was the first thing that came to mind so being on such a line,
I wanted to copy-paste it, and then change the thing inside the quotes
to whatever I have just copied from the
rules page.
So I started with this:
qq— start recording a macro named qyyp— duplicate the lineci'— delete what’s inside the quotes and switch to insert mode- hit
Command-Vto paste whatever I had in the OS clipboard - hit
Escto return to command mode and prepare for the next iteration qto finish the recording
Now to use it:
- copy another rule into OS clipboard
- switch to vim and hit
@qto run the q macro that I just recorded
Nope. The ^V was taken by vim literally: to just type in the
characters that I then had in the OS clipboard. So, to make it work, I
had to explicitly tell vim “paste the contents of the OS clipboard here”
which in its lingo is ^R+ — this while in insert mode. So I
re-recorded the macro as above and just replaced ^V with ^R+:
qqyypci'^R+<esc>q
That worked! Now I can: switch to browser, copy, and the just switch to
vim and hit @@ to have another rule added. 8-)