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

tmux

Jason Lotito
December 05, 2012

 tmux

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