All my development hosts are Linux machines. Mainly Gentoo ~amd64, although I also have Gentoo x86. No Windows systems in sight.
Eclipse IDE for C/C++ Developers
Version: Oxygen.3a Release (4.7.3a)
Build id: 20180405-1200
with
PyDev - Python Development environment.
Version: 6.5.0.201809011628
I also have the Yocto project plugin installed, plus a few more, but those are for development on other hardware platforms.
The projects required a fair bit of setting up, including pointing to paths in the SDK sysroot, but I have full cross-references going in Python and C++ code. Some of the SWIG generated glue can still throw a curve ball here and there, but it works fairly well.
I had a go at PyCharm and it failed badly. So did Visual Code. I only had a quick go with Atom and it didn't look promising either.
My requirements are probably well above most contributors, since I deal with the whole gamut, ranging from build system metadata, through kernel, drivers, libraries, system scripts and all the way to CSS for web pages. Eclipse does a pretty good job on most of it. It does require a lot of memory. I have the Eclipse Java VM set to use 4GB of RAM. When doing a full firmware build, systems with 16GB to 32GB RAM work for me. Then again, I'll routinely have several project open, including a couple of version of the Linux kernel, enigma2, a number of plugins, GStreamer, Samba, etc. It all adds up.
I use rsync or Dolphin with fish:// or scp:// to push files to the targets. Git-gui, gitk and git command line, together with Bitbucket/Github web interface for git work. I tried a number of Git GUI clients, but in the end decided that none of them make the job any easier. Every now and then, I just use vim or kwrite for quick edits.
Trickier task often get a line or two in a "cheat sheet file" to remind myself later. Repetitive things are usually scripted or added to GNU Makefiles.
Between development and feeds I use about 12 systems, no virtual machines or containers. I don't particularly want the builds to take any longer, it's bad enough to have to wait several hours as it is now. It's also likely to eat more memory. Given so many systems are involved, ssh with properly distributed keys is essential.
For debugging, I have a bunch of USB-serial converters and run minicom. It's configured to capture everything to log files that are stored permanently. I have several years worth of serial port logs from some systems.
Lots of storage is mandatory. At the moment I am using about 12TB, but I had to do some major cleaning up last week because I ran out of space. The NAS is out of drive bays, as is the laptop with three SSDs. My workstation could fit another drive, but then I won't have the space to back it up.
I'm sure you can still get decent results with a lot less, but if you want one IDE that groks everything, Eclipse is the only thing that I have found. At times, it is hard work setting it up, but it's worth it when you can just click or hover over code and get the relevant context sensitive info you need. The only thing missing is cross-debugging. I tried to get it going, but the MIPS remote client isn't capable enough. I have not tried with the ARM based machines.