I would argue that vim is fantastic for a lot of editing and coding tasks, just not all of them.
Where it utterly fails is with deep trees of files in codebases, like you see in Java or some Javascript/Typescript apps. Even with a robust suite of add-ons, you wind up backing into full-bore IDE territory to manage that much filesystem complexity. Only difference is that navigating and managing a large file tree w/o a mouse is kind of torture.
As someone who just picked through the Zig docs (take this with a mountain of salt), Zig has a few things going for it:
Go foists co-routines on you and the runtime, and Rust has the borrow checker. Both of these things deeply impact language design, standard libraries, and the overall developer experience. So Zig might actually be a “more modern C” in many ways which makes it a contender. That said, it’s not a 1:1 comparsion since it lacks everything else that C++ does: you’d have to re-envision your software designs as something other than OOP if that’s what you’re used to.