I'm using plain vim occasionally, but never tried to do any coding in it, just because I'm not sure how to configure it for that. Which plugins for Python coding are universally agreed on as "must haves" Preferably just one, or two at most.
> Which plugins for Python coding are universally agreed on as "must haves" Preferably just one, or two at most.
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.
I've always used the NetRW plugin for file management. NERDTree was too sluggish for me (but that was 6 years ago...)
NetRW does all I need to: tree view, open file (same buffer, same side-buffer, new buffer, new tab), create file, delete file. And it comes with vim's distribution.
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 used vim for a development IDE and customized extensively. These days, I've had to relearn stock vim, since I tend to log onto many corporate servers that aren't guaranteed to have my environment/plugins/settings. Also, the state of C++ syntax/symbol parsing wasn't where I needed it to be. Maybe it's gotten better?
I've found Nerdtree to be most indispensable. Other good ones are pathogen, ctrlp, a.vim, and vim-gitgutter
This refers to the Language Server Protocol [1] which is intended to decouple the IDE features from your editor so you can use it with any editor, such as Vim.
Vim's included Python support already does language-specific stuff like syntax highlighting and indenting. I think people use Jedi for autocomplete; I've never used it.
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!
I use Vim to code, but it took me a lot of time to find to configure it. My primary need when coding is quick jump to symbol definition, and after many trial and error attempts, settled on the plugins `vimprj` and `indexer` in combination with Universal Ctags. Have been using this setup for years and it's proven to be stable and giving me the result I need.
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 tried to switch to other editors several times, but couldn't make the transitions for several reasons: ) My editing workflow now is tightly tied to Vim, for example the normal/insert mode paradigm. ) The capability to navigate using hjkl is helping with my RSI condition, because I find that it helps to offload some of the workload on the wrist of the right hand. When editing in Vim, as compared to other traditional editors, my hands get less tired. *) Other editors have their own quircks, and I don't want to spend yet another number of years to adjust.
I've decided that the next time I switch to an editor, it's going to be to one written by myself.
You don't necessarily need any plugins. Vanilla Vim with the occasional ctrl+N is often enough. If you need a more powerful editor, perhaps it's better to just use something like VS Code.
You don't need any for python, really. You can run pdb in your :term split, which is nice. Other than that you only really get the vim advantage over IDE if you practice.
Check out VimAwesome (https://vimawesome.com) for finding plugins. They provide instructions for installing each plugin via Vundle, NeoBundle, VimPlug, and Pathogen.
I don't think the problem is finding vim plugins. It's more of choosing the best one. I don't want to spend a ton of time trying dozens of them.
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.
Would you modify vimrc at all on a remote server if you had to do some Python coding there? I mean maybe a few hours of coding, but you won't be coding again on that server, so you don't want to spend too much time configuring it.
Haven't been in that situation, but looking through my vimrc, the only things that I think I'd consider updating are turning off line wrap and changing the tab settings.
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.