Tip for vi users on Mac: get Karabiner-Elements and use the “complex modifier” that makes the Caps Lock key into ESC when you just press it, but Control when you use it with another key.
Indeed. And you can do the same thing with AutoHotKey on Windows and xcape or interception-tools on linux. Interception-tools has the big advantage that it doesn't just work under X (but also the console and wayland).
For windows i recommend uncap https://github.com/susam/uncap