VI was my second editor, ED was actually first, because the person teaching me VI thought that I should wrestle my way though the command line so that I would have a clue how to use it from VI. That was 1981.
Being addicted to the ed/ex command line, I quickly gravitated to writing macros for almost everything I wanted to do.
When I started working with an editorial team, I created a extensive set of VI macros that let us use a master file, initially created by "ls -R", to keep track of the status of multiple writing and editing projects for producing a magazine using 1981's UNIX tools.
Essentially it was a home-brewed IDE for our specific environment and workflow. Position your cursor on the file name and click a hot key and get the file locked for you and opened in VI with the editing macro set installed. When you close the file, you get a query whether you need to update its status, which is then recorded in the master file. And lots more.
Facility with REs lead to using SED for some pretty complicated tasks. People initially assumed SED was only for simple tasks so there was no comment syntax at first. But I couldn't keep track of my projects without comments, !c\ So I used my own home-brewed \ comment syntax, that worked \ just fine. \c!
At this point, SED does have comments, but JSON doesn't, so I've been doing the same kind of thing there.
After 15 years building UNIX pipelines to support being Editor in Chief of three different UNIX magazines, the publishing market radically changed in the late '90s, so I started doing API documentation (right around the time Doxygen was being created and the term API was gaining acceptance).
These days, I work in the environment my clients demand, but if I can move the document into VIM for global edits, I will, and I'll build macros to simply that.