It comes down to using the vim extension and making use of the context it adds when setting key binds. Both in settings and keybind json files you set commands for certain vim modes, or bind native VSCode commands to your leader. Zed does almost the same but with no defined leader key so you just have to be more specific about the command and the context they are executed in.