10 ms·
Practical Tmux
- weitzj 12y agoAlso 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 12y agoCool 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.
- weitzj 12y agoI am still used to <C-B> as a prefix. For splitting windows I am using <C-B>“ for the vertical split, and <C-B>_ for the horizontal split. The lines indicate the splitting direction, and I do not have to move my fingers around that much to reach, e.g <C-B>%
- eridius 12y agoAgreed. I fell in love with Tmux from the moment I realized it used <C-b> as the prefix. Still accessible with just my left hand (especially since I map Caps Lock to Ctrl), but doesn't block a commonly-used chord.
- vhost- 12y agoSame 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.
- dsimms 12y agoNote that maximum-awesome is for/by the vim crowd -- who could not care less about Ctrl-A being move-beginning-of-line but do want continuity with screen's prefix-key.
- okbake 12y agoI've always found the backtick (`) to be the most convenient for me. I can hit it easily with my left hand ring finger and I don't have to type backticks too much as I typically use $(command) for command substitution.
- dases 12y agoCtrl-a a gets you to beginning of line. My problem is that I'm so used to that combo that on the rare occasions that I'm not in a screen/tmux session, I keep putting "a"s at the start of the line.
- dfc 12y agoIn 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 12y agothats terrible. starting in $PWD is the first thing I encountered that I loved about tmux as a multiplexer vs iterm
- weitzj 12y agoYou can also do it for window-splits: unbind '%' bind '_' split-window -c "#{pane_current_path}" bind '"' split-window -h -c "#{pane_current_path}“ Here, I am using <C-B>“ or <C-B>_ for a vertical and horizontal splits.
- bphogan 12y agoAre you sure its $HOME? I think it's just the dir you load your session in. I just opened a new tmux session in ~/Dropbox and all new panes open in ~/Dropbox. So do my windows.
- ludwig 12y agoI'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
- rabino 12y agoIf you use tmux a lot, I can't recommend tmuxp enough. https://github.com/tony/tmuxp https://github.com/tony/tmuxp
- mnem 12y agoThat 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 12y agoAlso tmuxp allows you to save the settings from a running session into a config file. That's gold.
- hedwall 12y agoAny comments on how it differs from tmuxinator ?
- rabino 12y agoMostly, see my response to mnem. Also, tmuxp is python instead of ruby, and it gives you an API to interact from your python code with tmux.
- philsnow 12y agoI 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 12y ago> 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.
- mnem 12y agoI may have misunderstood what you meant, but copy and paste in tmux works in vertical panes just the same as horizontal panes: http://d.pr/i/93p2/wNHyqVFr http://d.pr/i/93p2/wNHyqVFr (copied from the right shell into vim in the left).
- PhineasRex 12y agoFor 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.
- agumonkey 12y agoI love the design but never made the switch, any tutorial to suggest ?
- PhineasRex 12y agoThe best source for the default commands is the dvtm man page.
- yiyus 12y agos/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 12y agoThanks, I had not seen abduco. I'll have to try it out.
- akkartik 12y agoI 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_vim_and_tmux_panes_painlessly/cgnnnai?context=2 http://www.reddit.com/r/vim/comments/22ixkq/navigate_around_... 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.
- stormbrew 12y ago> a) A single keyboard shortcut to navigate between both panes and vim windows in a single tmux workspace ... I really wish I could get this for tmux + i3wm. I haven't really looked for a way to achieve it yet, though.
- siddboots 12y agoLooks like we're using the same setup. I'm using ctrl+hjkl to navigate tmux and vim panes, and winkey+hjkl to navigate i3wm windows.
- AjithAntony 12y ago> 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 12y agoRun tmux on remote machines too. Assign different prefix keys for local and remote sessions. Has been working well for me.
- thirdtruck 12y agoThis long-time vim user thanks you.
- doxcf434 12y agoOne annoyance is that both tmux and screen have problems with truncating long lines in less.
- akira2501 12y agoI've switched to 'most' instead. You can use < and > to scroll left and right in the document.
- doxcf434 12y agoWorks like a charm! Thanks!
- keeperofdakeys 12y agoThis 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 12y agoWhen 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.
- grogs 12y agoOdd, I'm doing that daily at work without any issue. (tmux 1.8.x, putty, screen-256colors I believe)
- keeperofdakeys 12y agoWhat does "tput cols" say in and out screen/tmux? It's possible less doesn't know the proper width of the terminal.
- doxcf434 12y ago
- notwedtm 12y agoMy 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.
- druska 12y agobyobu
- softatlas 12y agoI play tictactmux at pomodoro intervals with clock-mode panes representing state. Roll d9 at turn for next move.
- cm3 12y agoTwo 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 12y ago"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.
- gitaarik 12y agoSo 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 12y agoIt is insensitive. Unless you enter an uppercase character, in which case that search turns case sensitive. Just like in every other program...
- Soarez 12y agoHere's another tmux guide with a few other tricks http://blog.soarez.com/post/57348732818/tmux http://blog.soarez.com/post/57348732818/tmux
- chilie 12y agoCan 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.)
- lallysingh 12y agoXmonad user here. Sessions are wonderful. I can run one just for xmonad as a job (I like to hack that config quite often ). Another just for my VPN script (which puts out I/O stats every few minutes). And per project, I'll have a few. Say I have one where I have one shell for compilation, one for version control, and two for testing. Give each one a prefix for the project, and I've got all that separated out. E.g.: Two projects: foo and bar: foo-compile, foo-git, foo-test-a, foo-test-b, bar-compile, bar-git, etc.. Now, I have clean shell histories (and scroll buffers) for each. I can ssh into each one as I want, and reuse my terminal windows. This latter bit helps keep my already-complex-enough window setup manageable.
- nilkn 12y ago1. 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 12y agoI 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).
- webhat 12y agoPractical Tmux? He changes the default prefix, but he only tells you after the first example.