I tried putting together a cheat sheet or reference card. After exploring various possibilities I ended up doing the following:
- Switch from a Swedish keyboard to an English (international) due to the latter being (in my opinion) superior when writing code as well as still being able to type åäö by alt+a/+w/+u+a/+o.
- Switch from QWERTY to Dvorak because I like how the keys are positioned (no scientific claims here) for programming purposes (had a look at "Programmer Dvorak" but that was too much).
- Replace vim hjkl movement with dhtn, dD with jJ (mnemonic: "junk"), K with H and the ctrl+w prefix with ctrl+o.
- Some minor additions (and unbinding advanced features to start out easy)...
TL;DR - stick to using prefixes where available, e.g. ctrl+a in tmux, ctrl+o (Dvorak)/ctrl+s (QWERTY) in vim and irssi. This seems to have the least consequences and be somewhat cross-platform-friendly.
My advice:
Use mosh
to connect to the remote server, once the session starts,
fire up tmux
mosh was built for the common, but less apocalyptic scenario of remote a session connecting through a cellular data link, before 3G was even a thing.
From the mosh
man page:
mosh (mobile shell) is a remote terminal application that
supports intermittent connectivity, allows roaming, and provides
speculative local echo and line editing of user keystrokes.
Compared with ssh, mosh is more robust — its connections stay up
across sleeps and changes in the client's IP address — and more
responsive, because the protocol is tolerant of packet loss and the
client can echo most keystrokes immediately, without waiting for a
network round-trip.
mosh uses ssh to establish a connection to the remote host and
authen‐ ticate with existing means (e.g., public-key authentication
or a pass‐ word). mosh executes the unprivileged mosh-server helper
program on the server, then closes the SSH connection and starts
the mosh-client, which establishes a long-lived datagram connection
over UDP.
Back in those days, if you used your laptop to log in to your ssh server, for example in a commuter train, using a CDMA "pc-card" modem on your blindingly fast compaq armada (omg pentium!), or using a serial cable to hook up that palm VII thingy that had some sort of data service; you would have your session disconnected every time you switched from one radio cell to the next, which in a commuter train could be every 3 to 5 minutes.
That would be an equivalent scenario to the old Soviet Union raining down plutonium along the train's track, from the connection's point of view...
so mosh
to the rescue. It uses ssh to authenticate, but the rest of the session is handled by the mosh tunnel, which was specifically designed for session resilience on flaky links.
From a user's perspective, nowdays it's imperceptible. I still use it to ssh, er... mosh from my Android device using termux
even though the links on 4G don't have this issue anymore.
Another frequent use case was ssh connections through flaky modem links over POTS, that would drop the session if your sister decided that she wanted to call her boyfriend and picked up the other FIXED phone in the house, even though you warned her that you'd be downloading U2's new album in MP3 format from a shady WaReZ site.
So if you would like to use this, install mosh using your distro's package manager on both server and client (no root needed on either, it will do a userland install if it can't get root, handy for Android devices) and then do:
terminus:~>> mosh trantor.mydoman.tld tmux
Last login: Wed Apr 4 21:27:38 2018 from XX.XXX.XXX.XXX
trantor:~>>
Enjoy! =)
Best Answer
if you close iterm2 then the shells attached to that instance of iterm2 are destroyed / closed as well. process-hierchy of this situation:
if you close the iterm2 which holds tmux, then tmux and the shells inside that tmux instance keep running. you can later reattach to that tmux instance (thats essentially how folks work on remote-servers in case the connection drops) and get back the situation as it was before you closed the iterm2. process-hierarchy of this situation:
to quote from tmux directly:
an older project providing basically the same functionality is screen