Tmux 复制模式与使用
我们在使用终端的过程中,常常会通过向上翻滚来回顾终端历史输出或者复制历史输出内容。但是在 tmux 的使用过程中你会发现我们无法直接查看终端历史输出内容。这是因为 tmux 将查看终端历史这一功能需要进入专门的复制模式(Copy-Mode)后才能使用。本文将详细介绍 tmux
复制模式的核心功能和使用技巧,帮助你充分利用这一强大工具。
1、什么是复制模式?
tmux
的复制模式允许用户在会话的滚动缓冲区中自由移动光标、选择文本并进行复制。
它的核心功能包括:
- 浏览窗口历史输出,即使数据已超出屏幕显示范围。
- 精确选择目标内容并复制到剪贴板或存储到系统中。
- 使用键盘快捷键快速导航和操作,避免鼠标操作的局限性。
默认情况下,tmux
的复制模式启用了类似 vi 的键位绑定,适合熟悉 vi 或 vim 编辑器的用户。
二、进入复制模式
复制模式可以通过快捷键Ctrl+b [
激活j。首先按下快捷键 Ctrl+b
, 松开后按下 [
.
如果你的
tmux
配置文件启用了鼠标支持(set -g mouse on
),可以直接通过滚动鼠标进入复制模式.
提示:默认滚动缓冲区长度为 2000 行。如果需要更长的历史记录,可以在配置文件中设置:
set -g history-limit 10000
三、复制模式的核心操作
进入复制模式后,可以使用键盘快捷键进行导航和选择内容。以下是vi模式下常见的操作命令:
功能 | 快捷键 | 说明 |
---|---|---|
向上滚动 | ↑ 或 k |
向上滚动一行 |
向下滚动 | ↓ 或 j |
向下滚动一行 |
向上翻页 | PageUp 或 Ctrl + b |
快速向上翻页 |
向下翻页 | PageDown 或 Ctrl + f |
快速向下翻页 |
移动到历史开头 | gg |
跳转到历史记录开头 |
移动到历史结束 | G |
跳转到历史记录结尾 |
移动到行首 | 0 或 ^ |
跳转到当前行的开头 |
移动到行尾 | $ |
跳转到当前行的末尾 |
查找文本 | / 或 ? |
搜索目标文本,/ 向下,? 向上 |
退出复制模式 | q |
退出当前模式,返回正常窗口 |
开始选择内容 | Space |
设置文本选择的起点 |
复制选中内容 | Enter |
确定选择范围并复制内容到 tmux 缓冲区 |
退出复制模式 | Escape |
退出复制模式 |
根据 tmux 版本的不同,部分 tmux 默认进入的是 Emacs 模式的快捷键。以下是 Emacs 模式下常见的操作命令:
功能 | 快捷键 | 说明 |
---|---|---|
向上滚动 | ↑ 或 Ctrl+p |
向上滚动一行 |
向下滚动 | ↓ 或 Ctrl+n |
向下滚动一行 |
向上翻页 | PageUp 或 Ctrl + b |
快速向上翻页 |
向下翻页 | PageDown 或 Ctrl + v 或 Space |
快速向下翻页 |
移动到历史开头 | Alt+Shift+, |
跳转到历史记录开头 |
移动到历史结束 | Alt+shift+. |
跳转到历史记录结尾 |
移动到行首 | Ctrl+a |
跳转到当前行的开头 |
移动到行尾 | Ctrl+e |
跳转到当前行的末尾 |
查找文本 | Ctrl+s 或 Ctrl+r |
搜索目标文本,Ctrl+s 向下,Ctrl+r 向上搜索 |
退出复制模式 | Ctrl+g |
退出当前模式,返回正常窗口 |
开始选择内容 | Ctrl+Space |
设置文本选择的起点 |
复制选中内容 | Enter |
确定选择范围并复制内容到 tmux 缓冲区 |
退出复制模式 | Escape |
退出复制模式 |
tmux 复制当前终端全部历史输出
tmux 可以将当前 pane 中的终端历史记录输出到一个文件中以便后续使用。可以通过 tmux 的命令模式进行操作:
- 快捷键
Ctrl+b :
进入 tmux 命令模式,输入capture-pane -J -S -
捕获当前窗格历史输出-S -
表示从历史记录开始进行捕获 - 快捷键
Ctrl+b :
再次进入 tmux 命令模式,输入save-buffer ~/tmux1.log
保存当前 buffer 中的内容到文件中去
capture-pane
的其他选项
-S
: 指定输出开始,-
表示从头开始,也可以指定相对于当前行的负值如-300
表示从当前行的前300行开始复制-E
: 指定输出结束,如果没有指定则为当前屏幕输出的最后一行-J
: 保留尾随空格并连接任何换行的行-e
: 输出将包括文本和背景属性的转义序列。
输入
clear-history
可以清除终端历史
tmux 复制当前终端历史输出(方式2)
通过 tmux copy-mode
同样可以实现将输出终端历史记录输出到一个文件中以便后续使用。
- 快捷键
Ctrl+b [
进入复制模式,默认 Emacs 模式快捷键。 - 快捷键
Alt+Shift+,
跳转到历史输出开始 - 快捷键
Ctrl+Space
开始选择 - 快捷键
Alt+shift+.
跳转到历史输出最后一行 - 快捷键
Ctrl+w
复制选择内容并退出选择 - 快捷键
Ctrl+b :
进入命令模式,输入save-buffer ~/tmux1.log
保存当前 buffer 中的内容到文件中.
Tmux 部分配置文件参考 ~/.tmux.conf
bind C-a send-prefix2
set -g base-index 1
set-option -g pane-base-index 1
bind B move-window -r
set-option -g mouse on
set-option -g history-limit 100000
set-option -g set-titles on
set-option -g set-titles-string "#{pane_title}"
bind c new-window -c "#{pane_current_path}"
bind "'"split-window -c "#{pane_current_path}"
bind split-window -h -c "#{pane_current_path}"
set-option -s focus-events on
set-option -s extended-keys on
set-option -s escape-time 0
参考资料
本文来自博客园,作者:ghimi,转载请注明原文链接:https://www.cnblogs.com/ghimi/p/18927693