I did pretty much the same thing for years, using Emacs org mode (same hyperlinked setup).
Then I used vim using `CTRL-Wgf`, same as you.
Then I added to my .bash_profile:
alias todo='vim ~/.todo'
Then I test drove a bunch of todo apps (yeah, Obsidian too).
The problem I found with this, eventually, is that it's really not great at allowing me to perform my most common workflow:
push-context -> start-new-thing -> finish-new-thing -> pop-context
Or
switch-context $OLD-THING -> switch-context $NEW-THING -> switch-previous-context
Or even
switch-previous-context -> switch-previous-context (repeat ad nauseum)
Or
switch-to-most-recent-context-in-admin -> switch-to-most-recent-context-in-other-project
etc.
Really, my tasks are not lists, they aren't even items to do. They're contexts which I want to switch to, switch between, discard once done (to maintain high SNR), branch off from, etc.
It's context management. A todolist app isn't going to cut it, and in fact, none of them did.
For the last 6 months or so I've been happily using a small tool I developed for myself, to suit my workflows (like the ones above). Even made a GUI for it.
It's the only thing I've used since I started with TODO files in the 90s that gets better at managing my contexts over time. Everything else gets worse over time, because the mismatch between what I want (context management) and what they provide (TODO items management) can easily be negligible when first using it with few items entered, but as that list grows so does the magnitude of the mismatch in what I want and what they do.
It's missing remote sync but I'll eventually add that in (so I can use it from the phone eventually). Easily the best 1 week I've ever spent on a project.