Ideally tools should be language and editor agnostic
We use shared tmux sessions for sharing a terminal/editor. Then for face-to-face, audio, and screen sharing, we use http://sococo.com/
We used to use https://screenhero.com/, but that can get fairly laggy. Tmux is much more responsive if you’re using vim or emacs.
I’m commenting just to let you know that Sococo is a company that sells coconut-related goods here in Brazil.
Keep it simple: Tmux on a shared server.
We use TeamViewer remotely. Not cheap, but it works pretty well.
Flootbits can be helpful for this — it’s not entirely editor agnostic as it has plugins into several of the common editors: https://floobits.com/
We also use Google Hangouts with screen-sharing, but that’s unfortunate because there’s no good way to let the other person drive.
We used ngrok (https://ngrok.com) and tmux for our pairing sessions, along with some audio communication channel (Skype). ngrok allows us not only to share the terminal via tmux, but also both sides can run the application in a browser if you share the appropriate ports. It’s very fast, and easy to use. A bit of learning curve is involved to get it setup though.
I use http://zoom.us/. None of the people I usually pair with are on emacs/vim (which causes me great sadness) so the tmux solutions don’t work for me. Zoom is free for 40 min meetings which auto cut off. This can also be EXTREMELY useful for time boxing meetings.