
Practical Tmux - weitzj
https://mutelight.org/practical-tmux
======
philsnow
I feel like I'm the only one taking crazy pills whenever this topic comes up.

Granted, tmux has a better configuration language.

However the whole session/window/pane/instance model is bizarre, as evidenced
by the secition "Multiple Clients Sharing One Session" under "common problems"
in the linked article.

On top of that, the below are all given as points in favor of tmux, but
they're either arguably better in screen or else a wash:

> Better redraw model

This is one of the (many) things that drove me back to screen. The two times I
tried tmux, it had exactly this kind of issue where it would fail to redraw
the screen correctly after SIGWINCH.

> screen contents persisted through full-screen programs

doesn't this depend on whether the program calls curses endwin() function ?
why does tmux/screen need to know about this ?

> not possible to remove the visual bell from Screen completely

doesn't this work?

    
    
        vbell off
        bell_msg ""
    

though I'm not sure why you would want to do such a thing.

> automatic window renaming

last I checked this used a huge amount of cpu. is that no longer the case ? in
any case, I name my windows according to what i'm doing in that window, since
"bash" or "screen" (I use nested screen sessions) or "emacs" is not a useful
window title.

> vertical splits

newish screen does this. I don't see the use. I figure I either have a roughly
80-column screen (default linux virtual terminals) or it's wide enough to have
multiple 80-column windows (laptop or desktop running X). If I have enough
horizontal space, I'm using a sensible window manager that is better-suited to
real estate management.

Also how does tmux handle copy/paste with vertical splits ?

> vi key bindings in copy mode

is this supposed to be a win for tmux over screen ? both basic emacs and vi
movement works out of the box in screen.

~~~
YTowOnt9
> Also how does tmux handle copy/paste with vertical splits ?

It doesn't. If I want to copy some text and it's in a vertical split, well...
shit. Time to break out the tmux manual and see if I can figure out how to
move this pane above the other one. You know what, screw it. I'll just open a
new window entirely, and re-run the test there so I can copy the output.

That's how tmux handles copy/paste with vertical splits.

~~~
mitchty
Huh copy/paste works fine with vertical splits. Just setup tmux to sync your
tmux clipboard with your regular x (or osx if you're into that kind of thing)
clipboard.

You mean selecting text with a mouse on a vertical split? If so get tmux
upgraded to 1.8+ then prefix-z and you can temporarily zoom the window to full
screen.

Your information on tmux is highly out of date.

Also prefix-alt-2 will move to horizontal layout of panes.

~~~
AjithAntony
Yes, the zoom feature (resize-pane -Z) is a game changer for tmux-to-system-
clipboard workflows. Before that I would do the block select with my mouse and
then weed out all the extra whitespace as needed later.

------
rabino
If you use tmux a lot, I can't recommend tmuxp enough.
[https://github.com/tony/tmuxp](https://github.com/tony/tmuxp)

~~~
mnem
That looks wonderful! Being able to place the config files in project folders
is a great idea. It always annoyed me when I forgot to backup the magic config
folder in tmuxinator when moving machines.

~~~
rabino
Also tmuxp allows you to save the settings from a running session into a
config file. That's gold.

------
akkartik
I started using tmux recently, and have two life-changing tweaks to share if
you're a vim user:

a) A single keyboard shortcut to navigate between both panes and vim windows
in a single tmux workspace:
[http://www.reddit.com/r/vim/comments/22ixkq/navigate_around_...](http://www.reddit.com/r/vim/comments/22ixkq/navigate_around_vim_and_tmux_panes_painlessly/cgnnnai?context=2)

b) Send a region from vim to a tmux/screen window:
[https://github.com/jpalardy/vim-slime](https://github.com/jpalardy/vim-slime)

The combination of these gives me a nice environment for lisp hacking without
needing to switch to emacs.

~~~
AjithAntony
> a) A single keyboard shortcut to navigate between both panes and vim windows
> in a single tmux workspace:

Oh man you got my hopes up. This would be lifechanging if my tmux session was
running on the same machine that vim was running. "#{pane_current_command}" is
almost always ssh for me.

~~~
xiaq
Run tmux on remote machines too. Assign different prefix keys for local and
remote sessions. Has been working well for me.

------
dfc
In one of the recent releases tmux switched from starting new panes in $PWD to
$HOME. I am sure they had their reasons but the new behavior is terrible for
me. To get the old behavior back (AKA new pane in current working directory)
add the following to ~/.tmux.conf

    
    
      bind c neww -c '#{pane_current_path}'

~~~
orenmazor
thats terrible. starting in $PWD is the first thing I encountered that I loved
about tmux as a multiplexer vs iterm

~~~
isbadawi
You can do that in iTerm too. Preferences -> Profiles -> General -> Working
Directory -> Reuse previous session's directory

------
ludwig
I've been using tmux for a while now, and it's a great tool. I hardly open any
new terminal windows now.

If anyone is interested in the settings I've accumulated over the months, here
is my config file:
[https://github.com/ludwig/dotfiles/blob/master/tmux.conf](https://github.com/ludwig/dotfiles/blob/master/tmux.conf)

~~~
return0
Isn't ctrl-a the shortcut for beginning of line? i prefer ctrl-x

~~~
nacs
I remap Control-A that way also -- it's a holdover from my 'screen' days.

------
weitzj
Also some interesting config files from square:
[https://github.com/square/maximum-awesome](https://github.com/square/maximum-
awesome)
[https://news.ycombinator.com/item?id=6306644](https://news.ycombinator.com/item?id=6306644)

~~~
base698
Cool setup, though I personally hate using Ctrl-A for the prefix. I am too
engrained to that being beginning of line. I use Ctrl-O since that doesn't
seem to interfere with anything major.

I started using tmux about 2 years ago and don't know how I lived without it.

~~~
vhost-
Same here, but I use Ctrl-j. I never understood why I see everyone using
Ctrl-a and Ctrl-b. Those are two very important navigations in my opinion.

~~~
blueblob
not that important if you have:

    
    
        set -o vi
    

in your bashrc.

~~~
mkiwala
Better yet, use `set editing-mode vi' in your .inputrc so that bash and other
readline enabled utilities default to vi-style bindings.

------
chilie
Can someone explain the benefits of using tmux or screen or something similar
over opening multiple terminals in a tiling WM?

The two arguments I could see are resource usage (not an issue on modern
machines) or detach/attach (which is a huge benefit when working remotely, but
I don't see any gain locally). But other than those, I don't see any benefits
to having a second tiling system sitting on top of my current tiling system.

(For reference, I use i3.)

~~~
nilkn
1\. You might not have a tiling window manager in the first place (there are
no decent ones on OS X that don't require manual operation to my memory).

2\. You work on a remote machine and prefer to have your window layout
remembered there, so it can instantly be restored no matter what computer
you're physically working on, whether or not it happens to have or even
support your favorite tiling window manager.

3\. It's simply easier for me to do everything within one terminal window
full-screened on a 27 inch monitor. It's less context switching.

~~~
chilie
I completely agree with 1 and 2 - my question was related to a local machine
with a tiling WM.

For 3, can you elaborate? How is it less context switching? You're doing the
same set of operations in both settings - switching, moving and resizing
terminal windows (whether real or virtual).

------
PhineasRex
For those who find tmux a bit arcane and screen a bit too primitive, I've
found dvtm+dtach to be an excellent terminal multiplexer and session manager.

~~~
yiyus
s/dtach/abduco/

Abduco is a dtach replacement by dvtm's author. From [http://www.brain-
dump.org/projects/abduco/](http://www.brain-dump.org/projects/abduco/) :

"abduco is in many ways very similar to dtach but is actively maintained,
contains no legacy code, provides a few additional features, has a cleaner,
more robust implementation and is licensed under a BSD style license"

~~~
PhineasRex
Thanks, I had not seen abduco. I'll have to try it out.

------
notwedtm
My one gripe about tmux is that when doing things like `git commit` where it
will open my editor (ST2), after I close the editor, tmux never realizes the
file has been closed, so it just hangs there. If I do the exact same command
outside of tmux, it doesn't.

------
cm3
Two issues in tmux not fixed or this way by design are missing flow control
and that you have to explicitly bind shortcuts which work in gnu screen
automatically without pressing Ctrl twice. Other than that it's good.

~~~
cm3
"without pressing Ctrl twice" should be "without pressing the binding while
not holding down Ctrl". Quickly pressing C-b c in tmux while still holding
down Ctrl doesn't work without an explicit binding and it does in gnu screen.

------
Soarez
Here's another tmux guide with a few other tricks
[http://blog.soarez.com/post/57348732818/tmux](http://blog.soarez.com/post/57348732818/tmux)

------
gitaarik
So does anyone know if there's a setting to make searching in copymode case
insensitive? This is the biggest reasing I can't switch to tmux...

~~~
clarry
It is insensitive. Unless you enter an uppercase character, in which case that
search turns case sensitive. Just like in every other program...

------
webhat
Practical Tmux? He changes the default prefix, but he only tells you after the
first example.

------
doxcf434
One annoyance is that both tmux and screen have problems with truncating long
lines in less.

~~~
keeperofdakeys
This is very strange, could you describe he problem more? Also, does the
contents of an ncurses app (vim, less, emacs) stay after you close the
program?

~~~
doxcf434
When I use less in a tmux or screen session to view /var/log/syslog et al,
when I type -S to chop long lines it continues to wrap the line instead of
chop it.

No the screen is cleared after quitting.

I have TERM set to xterm-256colors FWIW.

~~~
keeperofdakeys
What does "tput cols" say in and out screen/tmux? It's possible less doesn't
know the proper width of the terminal.

~~~
doxcf434
80 cols, which is correct. Less seems to be fine when not in a tmux session.

[https://asciinema.org/a/9601](https://asciinema.org/a/9601)

------
softatlas
I play tictactmux at pomodoro intervals with clock-mode panes representing
state. Roll d9 at turn for next move.

------
druska
byobu

