| .\" $Id: tmux.1,v 1.29 2008-06-05 21:25:00 nicm Exp $ |
| .\" |
| .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> |
| .\" |
| .\" Permission to use, copy, modify, and distribute this software for any |
| .\" purpose with or without fee is hereby granted, provided that the above |
| .\" copyright notice and this permission notice appear in all copies. |
| .\" |
| .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| .\" WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER |
| .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING |
| .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| .\" |
| .Dd November 9, 2007 |
| .Dt TMUX 1 |
| .Os |
| .Sh NAME |
| .Nm tmux |
| .Nd "terminal multiplexer" |
| .Sh SYNOPSIS |
| .Nm tmux |
| .Bk -words |
| .Op Fl vV |
| .Op Fl S Ar socket-path |
| .Op Ar command Op Ar arguments |
| .Ek |
| .Sh DESCRIPTION |
| .Nm |
| is a terminal multiplexer; it enables a number of terminals (or windows) to be |
| accessed and controlled from a single terminal. |
| .Pp |
| .Nm |
| runs as a server-client system. A server is created automatically when |
| necessary and holds a number of |
| .Em sessions , |
| each of which may have a number of |
| .Em windows |
| linked to it. Any number of |
| .Em clients |
| may connect to a session, or the server |
| may be controlled by issuing commands with |
| .Nm . |
| Communication takes place through a socket, by default placed in |
| .Pa /tmp . |
| .Pp |
| The options are as follows: |
| .Bl -tag -width "XXXXXXXXXXXX" |
| .It Fl S Ar socket-path |
| Specify an alternative path to the server socket. |
| The default is |
| .Pa /tmp/tmux-UID , |
| where |
| .Em UID |
| is the uid of the user who invoked |
| .Nm . |
| .It Fl v |
| Request verbose logging. |
| This option may be specified multiple times for increasing verbosity. |
| Log messages will be saved into |
| .Pa tmux-client-PID.log |
| and |
| .Pa tmux-server-PID.log |
| files in the current directory, where |
| .Em PID |
| is the pid of the server or client process. |
| .It Ar command Op Ar arguments |
| This specifies one of a set of commands used to control |
| .Nm , |
| and described in the following sections. |
| If no command and arguments is specified, the |
| .Ic new-session |
| command is assumed. |
| .Pp |
| .El |
| .Sh QUICK START |
| To create a new tmux session running |
| .Xr vi 1 : |
| .Pp |
| .Dl $ tmux new-session vi |
| .Pp |
| Most commands have a shorter form, known as an alias. |
| For new-session, this is |
| .Ic new : |
| .Pp |
| .Dl $ tmux new vi |
| .Pp |
| Alternatively, the shortest unambiguous form of a command is accepted. |
| If there are several options, they are listed: |
| .Bd -literal -offset indent |
| $ tmux n |
| ambiguous command: n, could be: new-session, new-window, next-window |
| $ |
| .Ed |
| .Pp |
| Within an active session, a new window may be created by typing |
| .Ql ^B |
| (ctrl-B, known as the prefix key) |
| followed by the |
| .Ql c |
| key. |
| .Pp |
| Windows may be navigated with: |
| .Ql ^B 0 |
| (to select window 0), |
| .Ql ^B 1 |
| (to select window 1), and so on; |
| .Ql ^B n |
| to select the next window; and |
| .Ql ^B p |
| to select the previous window. |
| .Pp |
| A session may be detached using |
| .Ql ^B d |
| and reattached with: |
| .Pp |
| .Dl $ tmux attach-session |
| .Pp |
| Typing |
| .Ql ^B \&? |
| lists the current key bindings in the current window; up and down may be used |
| to navigate the list or |
| .Ql Q |
| to exit from it. |
| .Sh KEY BINDINGS |
| .Nm |
| may be controlled from an attached client by using a key combination of a |
| prefix, |
| .Ql ^B |
| (ctrl-B) by default, followed by a command key. |
| .Pp |
| Some of the default key bindings include: |
| .Pp |
| .Bl -tag -width Ds -compact |
| .It Ql d |
| Detach current client. |
| .It Ql c |
| Create new window. |
| .It Ql n |
| Change to next window in the current session. |
| .It Ql p |
| Change to previous window in the current session. |
| .It Ql l |
| Move to last (previously selected) window in the current session. |
| .It Ql \&? |
| List current key bindings. |
| .El |
| .Pp |
| A complete list may be obtained with the |
| .Ic list-keys |
| command (bound to |
| .Ql \&? |
| by default). Key bindings may be changed with the |
| .Ic bind-key |
| and |
| .Ic unbind-key |
| commands. |
| .Sh HISTORY |
| .Nm |
| maintains a configurable history buffer for each window. |
| By default, up to 2000 lines are kept, this can be altered with the |
| .Ic history-limit |
| option (see the |
| .Ic set-option |
| command below). |
| .Sh MODES |
| A |
| .Nm |
| window may be in one of several modes. |
| The default permits direct access to the terminal attached to the window. |
| The others are: |
| .Bl -tag -width Ds |
| .It Em output mode |
| This is entered when a command which produces output, such as |
| .Ic list-keys , |
| is executed from a key binding. |
| The |
| .Ql up , |
| .Ql down , |
| .Ql page-up |
| and |
| .Ql page-down |
| keys or |
| .Xr vi 1 |
| style |
| .Ql j |
| and |
| .Ql k |
| keys may be used to scroll the output up and down. |
| The |
| .Ql q |
| key will exit output mode. |
| .It Em scroll mode |
| This is entered with the |
| .Ic scroll-mode |
| command (bound to |
| .Ql = |
| by default) and permits the window history buffer to be inspected. |
| In addition to the commands supported by output mode, the left and right arrow |
| keys, or |
| .Ql h |
| and |
| .Ql l , |
| will scroll left and right. |
| .It Em copy mode |
| This permits a section of a window or its history to be copied to the |
| .Em paste buffer |
| for later insertion into another window. |
| The navigation keys move the cursor around the window, scrolling as necessary. |
| In addition, |
| .Ql ^A |
| and |
| .Ql ^E |
| (or the |
| .Xr vi 1 |
| style |
| .Ql 0 |
| and |
| .Ql $ |
| keys) move to the start and end of the line; the space key begins a selection; |
| and the enter key or |
| .Ql ^W |
| copies the selection to the paste buffer and exits copy mode. |
| .Pp |
| This mode is entered with the |
| .Ic copy-mode |
| command, bound to |
| .Ql [ |
| by default. |
| .El |
| .Sh COMMANDS |
| This section contains a list of the commands supported by |
| .Nm . |
| There are some flags shared by several commands; these are: |
| .Bl -tag -width "XXXXXXXXXXXX" |
| .It Fl c Ar client-tty |
| Apply command to the client on the given tty. |
| Clients may be listed with the |
| .Ic list-clients |
| command. |
| .It Fl s Ar session-name |
| Apply command to the session named |
| .Ar session-name . |
| If it is omitted and |
| .Nm |
| is invoked from a running |
| .Nm |
| client, the session containing the client is connected to will be used; |
| otherwise, if only one session exists, it is chosen, or if multiple sessions |
| exist, an error is generated. |
| .El |
| .Pp |
| The following commands are available: |
| .Bl -tag -width Ds |
| .It Xo Ic attach-session |
| .Op Fl d |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic attach ) |
| Create a new client in the current terminal and attach it to a session. |
| If |
| .Fl d |
| is specified, any other clients attached to the session are detached. |
| .It Xo Ic bind-key |
| .Ar key Ar command Op Ar arguments |
| .Xc |
| .D1 (alias: Ic bind ) |
| Bind key |
| .Ar key |
| to |
| .Ar command . |
| .It Xo Ic copy-mode |
| .Op Fl s Ar session-name |
| .Xc |
| Enter copy mode. |
| .It Xo Ic detach-client |
| .Op Fl c Ar client-tty |
| .Xc |
| .D1 (alias: Ic detach ) |
| Detach the current client if bound to a key, or the specified client with |
| .Fl c . |
| .It Xo Ic has-session |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic has ) |
| Report an error and exit with 1 if the specified session does not exist. If it |
| does exist, exit with 0. |
| .It Xo Ic kill-server |
| .Xc |
| Kill the |
| .Nm |
| server and clients and destroy all sessions. |
| .It Xo Ic kill-session |
| .Op Fl s Ar session-name |
| .Xc |
| Destroy the given session, closing any windows linked to it and no other |
| sessions, and detaching all clients attached to it. |
| .It Xo Ic kill-window |
| .Op Fl i Ar index |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic killw ) |
| Kill the current window or the window at |
| .Ar index , |
| removing it from any sessions to which it is linked. |
| .It Xo Ic last-window |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic last ) |
| Select the last (previously selected) window. |
| .It Xo Ic link-window |
| .Op Fl dk |
| .Op Fl i Ar index |
| .Op Fl s Ar session-name |
| .Ar source-name Ar source-index |
| .Xc |
| .D1 (alias: Ic linkw ) |
| Link the window at |
| .Ar source-index |
| in session |
| .Ar source-name |
| into the specified session. If |
| .Ar index |
| is specified and no window exists with that index, the window is linked at |
| that index. |
| If |
| .Fl k |
| is given and a window exists at |
| .Ar index , |
| it is killed, otherwise an error is generated. |
| If |
| .Fl d |
| is given, the newly linked window is not selected. |
| .It Xo Ic list-clients |
| .Xc |
| .D1 (alias: Ic lsc ) |
| List all clients attached to the server. |
| .It Xo Ic list-keys |
| .Xc |
| .D1 (alias: Ic lsk ) |
| List all key bindings. |
| .It Xo Ic list-sessions |
| .Xc |
| .D1 (alias: Ic ls ) |
| List all sessions managed by the server. |
| .It Xo Ic list-windows |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic lsw ) |
| List all windows. |
| .It Xo Ic new-session |
| .Op Fl d |
| .Op Fl n Ar window-name |
| .Op Fl s Ar session-name |
| .Op Ar command |
| .Xc |
| .D1 (alias: Ic new ) |
| Create a new session with name |
| .Ar session-name . |
| The new session is attached to the current terminal unless |
| .Fl d |
| is given. |
| .Ar window-name |
| and |
| .Ar command |
| are the name of and command to execute in the initial window. |
| .It Xo Ic new-window |
| .Op Fl d |
| .Op Fl i Ar index |
| .Op Fl n Ar name |
| .Op Fl s Ar session-name |
| .Op Ar command |
| .Xc |
| .D1 (alias: Ic neww ) |
| Create a new window. If |
| .Fl d |
| is given, the session does not make the new window the current window. |
| .Ar index |
| and |
| .Ar name |
| are the index of the new window in the session and the name of the new window. |
| .Ar command |
| is the command to execute. |
| If |
| .Ar index |
| is not specified, the first free index is used. |
| If |
| .Ar command |
| is not specified, the default command is used. |
| .Pp |
| The |
| .Ev TERM |
| environment variable must be set to |
| .Dq screen |
| for all programs running |
| .Em inside |
| .Nm . |
| New windows will automatically have |
| .Dq TERM=screen |
| added to their environment, but care must be taken not to reset this in shell |
| start-up files. |
| .It Xo Ic next-window |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic next ) |
| Move to the next window in the session. |
| .It Xo Ic paste-buffer |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic paste ) |
| Insert the contents of the paste buffer into the current window. |
| Ignored unless executed via a key binding. |
| .It Xo Ic previous-window |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic prev ) |
| Move to the previous window in the session. |
| .It Xo Ic refresh-client |
| .Op Fl c Ar client-tty |
| .Xc |
| .D1 (alias: Ic refresh ) |
| Refresh the current client if bound to a key, or a single client if one given |
| with |
| .Fl c . |
| .It Xo Ic rename-session |
| .Op Fl s Ar session-name |
| .Ar new-name |
| .Xc |
| .D1 (alias: Ic rename ) |
| Rename the session to |
| .Ar new-name . |
| .It Xo Ic rename-window |
| .Op Fl i Ar index |
| .Op Fl s Ar session-name |
| .Ar new-name |
| .Xc |
| .D1 (alias: Ic renamew ) |
| Rename the current window, or the window at |
| .Ar index |
| if specifed, to |
| .Ar new-name . |
| .It Xo Ic scroll-mode |
| .Op Fl s Ar session-name |
| .Xc |
| Enter scroll mode. |
| .It Xo Ic select-window |
| .Op Fl s Ar session-name |
| .Op Fl i Ar index |
| .Xc |
| .D1 (alias: Ic selectw ) |
| Select the window at |
| .Ar index . |
| .It Xo Ic send-keys |
| .Op Fl c Ar client-tty |
| .Ar key Ar ... |
| .Xc |
| Send a key or keys to a window. |
| Each argument |
| .Ar key |
| is the name of the key (such as |
| .Ql ^A |
| or |
| .Ql npage |
| ) to send; if the string is not recognised as a key, it is sent as a series of |
| characters. |
| All arguments are sent sequentially from first to last. |
| .It Xo Ic send-prefix |
| .Op Fl c Ar client-tty |
| .Xc |
| Send the prefix key to a window as if it was pressed. |
| .It Xo Ic set-option |
| .Ar option Ar value |
| .Xc |
| .D1 (alias: Ic set ) |
| Set an option. Possible options are: |
| .Bl -tag -width Ds |
| .It Ic prefix Ar key |
| Set the current prefix key. |
| .It Ic history-limit Ar lines |
| Set the maximum number of lines held in window history. |
| This setting applies only to new windows - existing window histories are not |
| resized and retain the limit at the point they were created. |
| .It Xo Ic status |
| .Op Ic on | Ic off |
| .Xc |
| Show or hide the status line. |
| .It Ic status-fg Ar colour |
| Set status line foreground colour, where |
| .Ar colour |
| is one of: |
| .Ic black , |
| .Ic red , |
| .Ic green , |
| .Ic yellow , |
| .Ic blue , |
| .Ic magenta , |
| .Ic cyan , |
| .Ic white |
| or |
| .Ic default . |
| .It Ic status-bg Ar colour |
| Set status line background colour. |
| .It Xo Ic bell-action |
| .Op Ic any | Ic none | Ic current |
| .Xc |
| Set action on window bell. |
| .Ic any |
| means a bell in any window linked to a session causes a bell in the current |
| window of that session, |
| .Ic none |
| means all bells are ignored and |
| .Ic current |
| means only bell in windows other than the current window are ignored. |
| .It Ic default-command Ar command |
| Sets the command used for new windows (if not specified when the window is |
| created) to |
| .Ar command . |
| The default is |
| .Dq exec $SHELL . |
| .El |
| .It Xo Ic start-server |
| .Xc |
| Start the |
| .Nm |
| server, if not already running, without creating any sessions. |
| .It Xo Ic swap-window |
| .Op Fl i Ar index |
| .Op Fl s Ar session-name |
| .Ar source-name Ar source-index |
| .Xc |
| .D1 (alias: Ic swapw ) |
| This is similar to |
| .Ic link-window , |
| except the source and destination windows are swapped. |
| It is an error if no window exists at |
| .Ar index . |
| .It Xo Ic unbind-key |
| .Ar key |
| .Xc |
| .D1 (alias: Ic unbind ) |
| Unbind the key bound to |
| .Ar key . |
| .It Xo Ic unlink-window |
| .Op Fl i Ar index |
| .Op Fl s Ar session-name |
| .Xc |
| .D1 (alias: Ic unlinkw ) |
| Unlink the window at |
| .Ar index . |
| A window may be unlinked only if it is linked to multiple sessions - windows may |
| not be linked to no sessions. |
| .El |
| .Sh SEE ALSO |
| .Xr pty 4 |
| .Sh AUTHORS |
| .An Nicholas Marriott Aq nicm@users.sourceforge.net |