I wrote Python in Vim for about 15 years before finding python-mode[0] about 4 years ago and I now find it absolutely indispensable.
Just about the only thing that it doesn't do natively is Black[1] (think gofmt for Python) which I started using a few months ago. It's not too hard to run it occasionally on my codebase, but I hope it's added in soon.
python-mode did remove its folding capabilties some time back, but it was easy to use another plugin for that: vim-coiled-snake[2].
Apart from these two plugins, and vim-fugitive[3] for git (another one that is a must-have), I don't use anything else except for the occasional syntax coloring plugin.
[0] https://github.com/python-mode/python-mode
[1] https://black.readthedocs.io/en/stable/
Anything else I need I use a real file manager, like Midnight Commander (usually inside a vim's tab) of vifm (a very vi-like file manager).
I've found Nerdtree to be most indispensable. Other good ones are pathogen, ctrlp, a.vim, and vim-gitgutter
I've found vim-lsp is probably the best starting point, as you can plug any server you want into it, and have a consistent interface.
https://github.com/prabirshrestha/vim-lsp/wiki/Servers-Pytho...
I just want some basic stuff: autocomplete + indentation will probably achieve 90% of what I want from a Python IDE.
I'm one of the "computing for the apocalypse" people who try and configure things as little as possible, but I'm really attached to linting in Vim, and I use ALE [1] for this. AIUI it's the standard for asynchronous linting; Syntastic is the synchronous version, but the lag is juuuust a little too much for me.
netrw (Vim's included file browser plugin) has a lot of bugs on macOS, so I use NERDtree there, but have been thinking about looking around at nnn, defx, vim-netranger, etc.
Other than that, Vim has a lot of powerful configuration. It's worth looking around and fixing any immediate pain points you have; odds are there's an option that does what you want. Three cheers for mature software!
BTW worth checking https://github.com/justinmk/vim-dirvish as a lightweight alternative to NerdTree or netrw.
But I hate Vim.
It's so fragile. Configuring it is a nightmare. One buggy plugin could cause weird behaviour in the editor, and I'd had a hard time figuring out why.
In a recent incident of this kind, I noticed that the scrolling of syntax highlihted code became horribly slow, and the cause turned out to be the new regex engine of Vim 8.
So I've compiled Vim 7.4 from scratch, and intend on using that version till the end of time. By the way - my plugins are manually installed and I never upgrade them. Ever.
I've decided that the next time I switch to an editor, it's going to be to one written by myself.
To me, the main advantage of vim over IDE is it's there on any remote server.
But then again I use vscode and pycharm in vim mode.
What would be a single, simple thing I should do to improve Python coding experience when I login to some remote server? E.g. open .vimrc, put a few lines there, download/install plugin X.
Basically this block:
set ts=3
set expandtab
set sw=3
set nosmartindent
set nowrap
I don't know what all of those mean, but I like how my vim works. Usually if I'm editing files on a server its just editing configuration files, and I just use whatever the stock vim settings are.