It seems every developer has to talk about their setup, I guess I am no different.
Operating System(s) and Shell
I program in Python, so for ease of use I use either Ubuntu or OS X. I used to use Arch and Gentoo, but the one time you don't read the release notes while upgrading makes for a bad time getting running again. Some times it's just easier using an easy operating system. I use zsh for my shell, because I also love oh-my-zsh.
Editor (here be wars!)
My main editor as of this writing is Sublime Text 3. When I first started programming professionally out of college, I used vim. I used vim for a year or so until I found Sublime. I bought Sublime within an hour and a half of using it for the first time. I love multi line editing, I love the plethora of plugins it has available and I just love everything about the way it looks. After a while, I went back to vim, decided to dig deep into how to use it, and I remained happy with my vim use. I have extensive vim dot files, muscle memory:wq and I still love it.
For the past two years I actually used Pycharm, used the Community edition for a bit, and then finally paid for it for a year. Early March that year expired and now that JetBrains is doing a subscription model, I didn't feel like renewing (even if work would have paid for it). So I decided to start using Sublime Text 3 again.
The main reason I love Sublime right now has to be easy multiline text. There are ways you can do it with Pycharm, and vim (visual mode is awesome), but to me Sublime makes it the easiest, and that's why I stick with it.
I mentioned dotfiles in the Editor section, and I might as well link to them in case you have any desire to see my setup. My first dotfiles repo exists somewhere on my github archive account in which I just had a vimrc file some plugins and bundle code. A year or so later my dev team learned about thoughtbot's dotfiles. A nice collection of dotfiles that help a developer setup a new machine the same way every time. Since discovering them, I have put together my own version. I have dotfiles for zsh, vim, git, and more. When I want to setup a new computer I just clone the repo, and run the install bash script. Super easy and I don't even really think about it anymore.
Recently, github started showing signed commit metadata. I now sign all my git commits by default. The key I use can be found on my PGP Keys page. I keep this key on a Yubikey Neo. Any time I want to use this pgp key, I must have my yubikey in my computer. It's basically a SmartCard, but in nice small usb format. The Yubikey Neo has another awesome trick, it can generated One-time Passwords (OTP) at the press of a button. For authenticating to LastPass, which I use along with KeePass for passwords, I use my yubikey and it generates an OTP to verify my log in. The last trick the Yubikey has up its sleeve is the NFC capabilities. I store my 2FA Authenticator code for DigitalOcean on my yubikey. I just swipe it on any Android device with "Yubico Authenticator" installed, and I have my 2FA codes.
I also recently started using Authy for codes. I installed their ssh login binaries, and am required to type a token every time I log in. This may or may not remain, as it needs me to forward an environment variable any time I use scp.