If you use the right plugins + lsp, there's nothing you can do in vscode that you can't do in vim. Just requires a lot more upfront work, but you can check the config into a git repo.
I use "IDE features" when writing Scala: vim-plug first, then vim-lsc + metals. The configuration of lsc is trivial (as in you can copy an example of less than 10 lines).
After using this for a while, I replicated the same experience in Python with python-language-server (I install it with pip --user), and it was matter of 5 minutes to setup. Before this I was using syntastic + ctags, and that required much more work.
May be is more work than getting the same functionality in VSCode, but it doesn't look a lot of work to me.