.tmux

.tmux

功能丰富且高度可定制的 tmux 配置项目

.tmux 是一个功能丰富的 tmux 配置项目。它提供 Powerline 风格主题,支持窗格最大化、鼠标模式、电池状态显示等功能。用户可通过编辑本地配置文件进行个性化设置。项目集成了 TPM 插件系统,支持 SSH/Mosh 感知的用户名和主机名显示。适用于 Linux、Mac、OpenBSD、Cygwin 和 WSL 等环境,为 tmux 用户提供灵活的使用体验。

tmux配置文件终端复用器命令行工具开源项目Github

.tmux

这是一个独立的、漂亮且多功能的 .tmux.conf 配置文件。

截图

安装

要求:

  • tmux >= 2.6 在 Linux、Mac、OpenBSD、Cygwin 或 WSL 中运行
  • awk、perl (支持 Time::HiRes) 和 sed
  • 在 tmux 外部,$TERM 必须设置为 xterm-256color

⚠️ 安装之前,您可能想备份现有配置。

您可以在以下任一位置安装 Oh my tmux!:

  • ~
  • $XDG_CONFIG_HOME/tmux
  • ~/.config/tmux

~ 中安装:

$ cd
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .

$XDG_CONFIG_HOME/tmux 中安装:

$ git clone https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
$ mkdir -p "$XDG_CONFIG_HOME/tmux"
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "$XDG_CONFIG_HOME/tmux/tmux.conf"
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "$XDG_CONFIG_HOME/tmux/tmux.conf.local"

~/.config/tmux 中安装:

$ git clone https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
$ mkdir -p "~/.config/tmux"
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "~/.config/tmux/tmux.conf"
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "~/.config/tmux/tmux.conf.local"

⚠️ 在 $XDG_CONFIG_HOME/tmux~/.config/tmux 中安装时,配置文件名前面没有 . 字符。

❗️ 您永远不应该修改主 .tmux.conftmux.conf 文件。如果这样做,后果自负。相反,每个自定义都应该在您的 .tmux.conf.localtmux.conf.local 自定义文件副本中进行。

如果您是 Vim 用户,将 $EDITOR 环境变量设置为 vim 将启用并进一步自定义 vi 风格的键绑定(参见 tmux 手册)。

如果您是 tmux 新手,我建议您阅读 @bphogantmux 2: Productive Mouse-Free Development

现在继续[调整]您的 .local 自定义文件副本。

故障排除

  • 我正在运行 tmux HEAD,但是东西不能正常工作。我该怎么办?

    请开一个 issue 描述即将发布的 tmux 中不工作的内容。我会尽最大努力解决它。

  • 状态栏损坏和/或在屏幕底部重复。这是怎么回事?

    这在 Linux 上尤其常见,当发行版提供了接收 Unicode 9.0 升级的 glib 版本(glib >= 2.50.1),同时提供了未升级的 glibc 版本(glibc < 2.26)时。您也可以将 LC_CTYPE 配置为使用 UTF-8 语言环境。通常,基于 VTE 的终端模拟器依赖于 glib 的 g_unichar_iswide() 函数,而 tmux 依赖于 glibc 的 wcwidth() 函数。当这两个函数不一致时,显示就会混乱。

    在 macOS 上使用 iTerm2 并启用"使用 Unicode 版本 9 字符宽度"(在 Preferences... > Profiles > Text 中)时,也可能发生这种情况。

    出于这个原因,默认示例 .local 自定义文件停止使用 Unicode 8.0 和 9.0 标准之间宽度发生变化的 Unicode 字符,以及 Emoji。

  • 我安装了 Powerline 和/或(修补过的)字体,但看不到 Powerline 符号。

    首先,您不需要安装 Powerline。您只需要用 Powerline 符号修补过的字体或独立的 PowerlineSymbols.otf 字体。然后确保您的 .local 自定义文件副本在 tmux_conf_theme_left_separator_XXX 值中使用 Powerline 代码点。

  • 我正在使用 Bash On Windows (WSL),颜色和 Powerline 外观损坏。

    目前在为 Bash On Windows 提供动力的新控制台中存在一个 bug,阻止文本属性(粗体、下划线等)与颜色正确组合。解决方法是搜索您的 .local 自定义文件副本,并将属性替换为 'none'

    此外,在 Windows 控制台用 DirectWrite 替换其基于 GDI 的渲染之前,Powerline 符号将会损坏。

    替代方案是使用 WSL 的 Mintty 终端

功能

  • C-a 作为辅助前缀,同时保留默认的 C-b 前缀
  • 视觉主题灵感来自 Powerline
  • 使用 <prefix> + 将任何窗格最大化为新窗口
  • 支持 SSH/Mosh 的用户名和主机名状态行信息
  • <prefix> m 切换鼠标模式
  • 笔记本电池状态行信息
  • 运行时间状态行信息
  • 可选的焦点窗格高亮
  • 可配置的新窗口和窗格行为(可选择保留当前路径)
  • 支持 SSH/Mosh 的分割窗格(重新连接到远程服务器)
  • 复制到操作系统剪贴板(在 Linux 上需要 xselxclipwl-copy)
  • 支持 4 位十六进制 Unicode 字符
  • 如果可用,集成 Facebook PathPicker
  • 如果可用,集成 Urlscan (首选)或 Urlview

"使用 <prefix> + 将任何窗格最大化为新窗口"功能与内置的 resize-pane -Z 不同,因为它允许您进一步分割最大化的窗格。它还更灵活,允许您将窗格最大化为新窗口,然后切换窗口,然后返回,窗格仍然在其自己的窗口中处于最大化状态。然后,您可以通过从源窗口或最大化窗口使用 <prefix> + 来最小化窗格。

最大化窗格

鼠标模式允许您设置活动窗口、设置活动窗格、调整窗格大小,并自动切换到复制模式以选择文本。

鼠标模式

绑定

可以通过使用前缀键和命令键的组合来控制已附加客户端的 tmux。此配置使用 C-a 作为辅助前缀,同时保留 C-b 作为默认前缀。在以下键绑定列表中:

  • <prefix> 表示您必须按下 <kbd>Ctrl</kbd> + <kbd>a</kbd><kbd>Ctrl</kbd> + <kbd>b</kbd>
  • <prefix> c 表示您必须按下 <kbd>Ctrl</kbd> + <kbd>a</kbd><kbd>Ctrl</kbd> + <kbd>b</kbd> 然后按 <kbd>c</kbd>
  • <prefix> C-c 表示您必须按下 <kbd>Ctrl</kbd> + <kbd>a</kbd><kbd>Ctrl</kbd> + <kbd>b</kbd> 然后按 <kbd>Ctrl</kbd> + <kbd>c</kbd>

此配置使用以下绑定:

  • <prefix> e$EDITOR 环境变量定义的编辑器(为空时默认为 vim)打开 .local 自定义文件副本

  • <prefix> r 重新加载配置

  • C-l 清除屏幕和 tmux 历史记录

  • <prefix> C-c 创建新会话

  • <prefix> C-f 让您按名称切换到另一个会话

  • <prefix> C-h<prefix> C-l 让您导航窗口(默认的 <prefix> n<prefix> p 未绑定)

  • <prefix> Tab 带您到最后活动的窗口

  • <prefix> - 垂直分割当前窗格

  • <prefix> _ 水平分割当前窗格

  • <prefix> h<prefix> j<prefix> k<prefix> l 让您像 Vim 一样导航窗格

  • <prefix> H<prefix> J<prefix> K<prefix> L 让您调整窗格大小

  • <prefix> <<prefix> > 让您交换窗格

  • <prefix> + 将当前窗格最大化为新窗口

  • <prefix> m 切换鼠标模式开关

  • <prefix> U 启动 Urlscan(首选)或 Urlview(如果可用)

  • <prefix> F 启动 Facebook PathPicker(如果可用)

  • <prefix> Enter 进入复制模式

  • <prefix> b 列出粘贴缓冲区

  • <prefix> p 从顶部粘贴缓冲区粘贴

  • <prefix> P 让您选择要从中粘贴的粘贴缓冲区

此外,copy-mode-vi 匹配我自己的 Vim 配置

copy-mode-vi 的绑定:

  • v 开始选择/可视模式
  • C-v 在块状可视模式和可视模式之间切换
  • H 跳转到行首
  • L 跳转到行尾
  • y 将选择复制到顶部粘贴缓冲区
  • Escape 取消当前操作

配置

虽然此配置尝试提供合理的默认设置,但您可能希望根据自己的需求进一步自定义它。

❗️ 再次强调,您永远不应该修改主 .tmux.conftmux.conf 文件。如果这样做,后果自负。

请参考示例 .local 自定义文件以了解更多关于允许您改变不同行为的变量。成功安装后,按 <prefix> e 将用 $EDITOR 环境变量定义的编辑器(为空时默认为 vim)打开您的 .local 自定义文件副本。

启用 Powerline 外观

Powerline 最初是 Vim 的状态行插件。它受欢迎的醒目外观基于使用特殊符号: <img width="80" alt="Powerline 符号" style="vertical-align: middle;" src="https://yellow-cdn.veclightyear.com/2b54e442/3cd48e7f-e38e-4634-afab-f98f7d753958.png" />

要使用这些符号,有几个选项:

然后编辑你的 .local 自定义文件副本(使用 <prefix> e)并调整以下变量:

tmux_conf_theme_left_separator_main='\uE0B0'
tmux_conf_theme_left_separator_sub='\uE0B1'
tmux_conf_theme_right_separator_main='\uE0B2'
tmux_conf_theme_right_separator_sub='\uE0B3'

Powerline 手册包含了如何安装包含 Powerline 符号的字体的更多细节。但你不需要安装 Powerline 本身。

配置状态栏

编辑你的 .local 自定义文件副本(<prefix> e)并根据你自己的偏好调整 tmux_conf_theme_status_lefttmux_conf_theme_status_right 变量。

此配置支持以下内置变量:

  • #{battery_bar}: 水平电池充电条
  • #{battery_hbar}: 1 字符宽,水平电池充电条
  • #{battery_vbar}: 1 字符宽,垂直电池充电条
  • #{battery_percentage}: 电池百分比
  • #{battery_status}: 电池是充电还是放电?
  • #{circled_session_name}: 圆圈中的会话号,最多 20
  • #{hostname}: SSH/Mosh 感知的主机名信息
  • #{hostname_ssh}: SSH/Mosh 感知的主机名信息,未通过 SSH/Mosh 连接到远程服务器时为空
  • #{loadavg}: 平均负载
  • #{pairing}: 会话是否连接到多个客户端?
  • #{prefix}: 前缀键是否被按下?
  • #{root}: 当前用户是否为 root?
  • #{synchronized}: 面板是否同步?
  • #{uptime_y}: 运行时间(年)
  • #{uptime_d}: 运行时间(天),使用 #{uptime_y} 时取模 365
  • #{uptime_h}: 运行时间(小时)
  • #{uptime_m}: 运行时间(分钟)
  • #{uptime_s}: 运行时间(秒)
  • #{username}: SSH/Mosh 感知的用户名信息
  • #{username_ssh}: SSH 感知的用户名信息,未通过 SSH/Mosh 连接到远程服务器时为空

除了上面提到的变量外,tmux_conf_theme_status_lefttmux_conf_theme_status_right 变量还支持常规的 tmux 语法,例如使用 #() 调用外部命令插入由 wttr.in 提供的天气信息:

tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #(curl -m 1 wttr.in?format=3 2>/dev/null; sleep 900) , %R , %d %b | #{username}#{root} | #{hostname} '

sleep 900 调用确保无论 status-interval 的值如何,网络请求最多每 15 分钟发出一次。

来自 wttr.in 的天气信息

💡 你也可以通过编写特殊函数来定义自己的自定义变量,请参阅示例 .local 自定义文件以获取说明。

最后,请记住 tmux_conf_theme_status_lefttmux_conf_theme_status_right 最终会作为 status-leftstatus-right 传递给 tmux,这意味着它们会通过 strftime() 处理。因此,% 字符具有特殊含义,需要通过将其加倍来转义,例如:

tmux_conf_theme_status_right='#(echo foo %% bar)'

另请参阅 man 3 strftime

使用 TPM 插件

此配置现在内置了 TPM 支持:

  • 使用 set -g @plugin ... 语法启用插件
  • 当插件引入要在 status-leftstatus-right 中使用的变量时,你可以在 tmux_conf_theme_status_lefttmux_conf_theme_status_right 变量中使用它,请参阅上面的说明 👆
  • ⚠️ 不要在任何配置文件中添加 set -g @plugin 'tmux-plugins/tpm'
  • ⛔️ 不要在任何配置文件中添加 run '~/.tmux/plugins/tpm/tpm'

⚠️ TPM 绑定与上游略有不同:

  • 安装插件: <prefix> + I
  • 卸载插件: <prefix> + Alt + u
  • 更新插件: <prefix> + u

请参阅示例 .local 自定义文件以获取说明。

在 Mintty 中的 Cygwin 下使用此配置

我不再推荐在 Cygwin 下运行此配置。Cygwin 下的分叉速度极慢,而此配置在后台执行了大量 run-shell 命令。因此,你将遇到高 CPU 使用率。作为替代方案,请考虑使用 WSL 的 Mintty 终端

cygwin

在 Mintty 中的 Cygwin 下使用此配置是可能的,但对 Unicode 符号和表情符号的支持落后于 Mac 和 Linux。

特别是,Mintty 的文本渲染是通过 GDI 实现的,这有一些限制:

  • 彩色表情符号仅从 Windows 8.1 开始通过 DirectWrite 可用
  • 双宽符号的显示,如电池放电符号指示器(U+1F50B)有bug

要正确显示 Unicode 符号,你必须使用字体链接。 打开 regedit.exe,然后导航到注册表键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink, 为你喜欢的字体添加一个新条目,将其链接到 Segoe UI Symbol 字体。

regedit

编辑推荐精选

讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

下拉加载更多