Tmux 学习笔记
link: http://tangosource.com/blog/a-tmux-crash-course-tips-and-tweaks/
tmux 基础知识
By default, tmux uses Ctrl-b as the prefix key.
<prefix> c: Create a new window (appears in status bar) <prefix> 0: Switch to window 0 <prefix> 1: Switch to window 1 <prefix> 2: Switch to window 2 (etc.) <prefix> x: Kill current window <prefix> d: Detach tmux (exit back to normal terminal)
To see all tmux sessions, you can enter:
tmux ls
To attach to the last used session, you can enter:
tmux a
To attach to a specific session, you can enter:
tmux a -t <session-name>
You can also customize tmux by making a .tmux.conf file in your home directory.
# remap prefix from 'C-b' to 'C-a' unbind C-b set-option -g prefix C-a bind-key C-a send-prefix #Start window numbering at 1 set -g base-index 1
A few recommendations:
如果你还没有把 ctrl 键映射到 caps-lock 键,我建议你那么做。
unbind C-b set -g prefix C-a
~/.tmux.conf 文件只有在每次打开时才会读取更新,所以我建议:
# bind a reload key bind R source-file ~/.tmux.conf \; display-message "Config reloaded."
这样的话,你每次添加更新后,只需按 Ctrl-b R 重新加载配置即可。
Sessions A tmux session can contain multiple windows, Sessions are a neat feature. To create a new session just run:
tmux new -s <name-of-my-session>
To create a new session press Ctrl-b : and the enter the following command:
new -s <name-of-my-new-session>
Navigation through Tmux sessions
To get a list of the existing sessions, press Ctrl-b s
In the case that you are not in Tmux but you have one or more sessions running just use:
tmux attach
Fast text navigation and copying
Navigate text
Tmux allows for text navigation in a way that is very similar to Vim.
# Use vim keybindings in copy mode setw -g mode-keys vi
Send copied text to System's clipboard
By default, when you copy text from Tmux, the text is only available to be inside that same Tmux session. In order to make that text available to be pasted anywhere, you have to tell Tmux to copy to system's clipboard.
Install retach-to-user-namespace, this is very easy with brew, just run the following command:
brew install reattach-to-user-namespace
Update ~/.tmux.conf file
# invoke reattach-to-user-namespace every time a new window/pane opens set-option -g default-command "reattach-to-user-namespace -l bash"
Select and copy text
Now, follow these steps to copy that text:
- Enter copy mode: ctrl-b [.
- Start moving across the text as you would do in Vim: with j, k, l, h, etc..
- Once you get to the text you want to copy press the spacebar and start selecting text(exactly as you would do it in Vim).
- Once text is selected press enter key
Make text copying even more Vim-like
You can use v key to select text and v to copy it, just add and following to your ~/.tmux.conf file:
# start selecting text typing 'v' key (once you are in copy mode) bind-key -t vi-copy v begin-selection # copy selected text to the system's clipboard bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
Effective pair programming
You can share the address of a Tmux session with someone else, and that person can connect to the session via SSH. Since the connection runs over SSH, it will be very lightweight. For the user connecting to the remote Tmux session, it will fell as if the session is running locally, providing the internet connection is fast enough.
Tmux with Tmate
Tmate is a tool that makes it very easy to create a Tmux session and share it with someone else over hte internet.
Install Homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install Tmate
brew update && \ brew tap naviennot/tmate && \ brew install tmate
Launch a new session with Tmate:
tmate
- Copy the SSH URL given by Tmate on the Tmux session.
- Ask the other person to access via SSH using the URL you just copied.
Table Notes
命令 | 属性 |
---|---|
ctrl-b s | 列出当前tmux中的会话 |
ctrl-b % | 垂直分割 |
ctrl-b " | 水平分割 |
ctrl-b ➡ | 进入目标窗格 |
ctrl-b c | 创建窗口 |
ctrl-b 0..! | 进入对应数字窗口 |
tmux new -s name | start new with session name |
tmux a # (or at, or attach) | attach |
tmux a -t name | attach to nameed |
tmux ls | list sessions |
tmux kill-session -t name | kill session |
In tmux, hit the prefix ctrl+b (my modified prefix is ctrl+a) and then:
Sessions
:new<CR> new session s list sessions $ name session
Windows(tabs)
c create window w list windows n nest window p previous window f find window , name window & kill window
Panes(splits)
% vertical split " horizontal split o swap panes q show pane numbers x kill pane + break pane into window (e.g. to select text by mouse to copy) - restore pane from window <prefix> q (show pane numbers, when the numbers show up type the key to goto that pane) <prefix> { (move the current pane left) <prefix> } (move the current pane right) <prefix> z toggle pane zoom
Misc
d detach t big clock ? list shortcuts : prompt
Comments:
Email questions, comments, and corrections to hi@smartisan.dev.
Submissions may appear publicly on this website, unless requested otherwise in your email.