Upgrade to Pro — share decks privately, control downloads, hide ads and more …

tmux

Avatar for Jason Lotito Jason Lotito
December 05, 2012

 tmux

Avatar for Jason Lotito

Jason Lotito

December 05, 2012
Tweet

More Decks by Jason Lotito

Other Decks in Technology

Transcript

  1. tmux or how I learned to just compile it locally

    and not wait for it to get installed on sandbox - TERMINAL MULTIPLEXER Wednesday, December 5, 12
  2. what is tmux? tmux is a terminal multiplexer: it enables

    a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached. Wednesday, December 5, 12
  3. a consistent, well- documented command interface, with the same syntax

    whether used interactively, as a key binding, or from the shell Wednesday, December 5, 12
  4. libevent $ wget http://sourceforge.net/projects/levent/files/latest/download $ tar xfz libevent-2.0.17-stable.tar.gz $ cd

    libevent-2.0.17-stable/ $ /configure—prefix=/home/jlotito $ make $ make install Wednesday, December 5, 12
  5. tmux $ wget http://sourceforge.net/projects/tmux/files/latest/download $ tar xfz tmux-1.6.tar.gz $ cd

    tmux-1.6 $ ./configure—prefix=/home/jlotito Wednesday, December 5, 12
  6. $ cd $ mkdir bin $ cp ~/../jlotito/bin/tmux ~/bin $

    export PATH=~/bin:$PATH Wednesday, December 5, 12
  7. prefix = CTRL + b This is the default prefix

    It’s run before every command prefix d This means type ‘CTRL + b’ and then type ‘d’. Wednesday, December 5, 12
  8. prefix d Detaches from the current tmux session In other

    words, it exits tmux Wednesday, December 5, 12
  9. prefix w provides a list of windows available ‘j’ and

    ‘k’ to scroll the selections Wednesday, December 5, 12
  10. prefix % That’s not 5, but ‘%’, which means prefix

    SHIFT+5 This splits the pane in half Wednesday, December 5, 12
  11. prefix x In the lower portion of tmux, you’ll see

    it ask you: kill pane 2? (y/n) type ‘y’ Wednesday, December 5, 12
  12. prefix [ CTRL u : up a lot CTRL d:

    down a lot Love alot. j : up a line d : down a line q: quit Wednesday, December 5, 12
  13. CTRL + B is awkward # Prefix Config set -g

    prefix C-a unbind C-b bind C-a send-prefix Wednesday, December 5, 12
  14. Make it responsive # Changing the default delay set -sg

    escape-time 1 Wednesday, December 5, 12
  15. Easy config changes # Easy config changes bind r source-file

    ~/.tmux.conf \; display "Reloaded!" Wednesday, December 5, 12
  16. Easy Pane Spitting # Splitting Panes bind \ split-window -h

    bind - split-window -v Wednesday, December 5, 12
  17. Easy Pane Movement # Movement keys, vim style bind h

    select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R Wednesday, December 5, 12
  18. Pane Resizing # Pane resizing, vim style bind H resize-pane

    -L 5 bind J resize-pane -D 5 bind K resize-pane -U 5 bind L resize-pane -R 5 Wednesday, December 5, 12
  19. Try the pane resizing Don’t forget to run this command

    prefix r Wednesday, December 5, 12
  20. Let’s make resizing easier by repeating # Pane resizing, vim

    style bind -r H resize-pane -L 5 bind -r J resize-pane -D 5 bind -r K resize-pane -U 5 bind -r L resize-pane -R 5 Wednesday, December 5, 12
  21. resize prefix L -r You can hold it down, and

    it will keep moving Wednesday, December 5, 12
  22. Start at 1 # Windows and panes index renumbering set

    -g base-index 1 setw -g pane-base-index 1 Wednesday, December 5, 12
  23. Basic UI # Colors set -g status-fg white set -g

    status-bg black Wednesday, December 5, 12
  24. Window movement # Window Movement bind -r C-h select-window -t

    :- bind -r C-l select-window -t :+ Wednesday, December 5, 12
  25. new in 1.7 tmux configuration files now support line-continuation with

    a "\" at the end of a line. * New option status-position to move the status line to the top or bottom of the screen. * Enforce history-limit option when clearing the screen. * Give each window a unique id, like panes but prefixed with @. * Add pane id to each pane in layout description (while still accepting the old form). * Provide defined ways to set the various default-path possibilities: ~ for home directory, . for server start directory, - for session start directory and empty for the pane's working directory (the default). All can also be used as part of a relative path (eg -/foo). Also provide -c flags to neww and splitw to override default-path setting. * Add -l flag to send-keys to send input literally (without translating key names). * Allow a single option to be specified to show-options to show just that option. * New command "move-pane" (like join-pane but allows the same window). * join-pane and move-pane commands learn "-b" option to place the pane to the left or above. * Support for bracketed-paste mode. * Allow send-keys command to accept hex values. * Add locking around "start-server" to avoid race-conditions. * break-pane learns -P/-F arguments for display formatting. * set-option learns "-q" to make it quiet, and not print out anything. * copy mode learns "wrap-search" option. * Add a simple form of output rate limiting by counting the number of certain C0 sequences (linefeeds, backspaces, carriage returns) and if it exceeds a threshold (current default 250/millisecond), start to redraw the pane every 100 milliseconds instead of making each change as it comes. Two configuration options - c0-change-trigger and c0-change-interval. * find-window learns new flags: "-C", "-N", "-T" to match against either or all of a window's content, name, or title. Defaults to all three options if none specified. * find-window automatically selects the appropriate pane for the found matches. * show-environment can now accept one option to show that environment value. * Exit mouse mode when end-of-screen reached when scrolling with the mouse wheel. * select-layout learns -u and -U for layout history stacks. * kill-window, detach-client, kill-session all learn "-a" option for killing all but the current thing specified. * move-window learns "-r" option to renumber window sequentially in a session. * New session option "renumber-windows" to automatically renumber windows in a session when a window is closed. (see "move-window -r"). * Only enter copy-mode on scroll up. * choose-* and list-* commands all use "-F" for format specifiers. * When spawning external commands, the value from the "default-shell" option is now used, rather than assuming /bin/sh. * New choose-tree command to render window/sessions as a tree for selection. * display-message learns new format options. * For linked-windows across sessions, all flags for that window are now cleared across sessions. * Lots and lots of bug fixes, fixing memory-leaks, etc. * Various manpage improvements. Wednesday, December 5, 12