本文整理自个人 Gist,记录了在 macOS 和 CentOS 两个平台下,从零搭建一套以 tmux + Neovim 为核心的终端开发环境的完整流程,包括安装、配置和关键细节。
背景
终端环境的配置往往是"一次搭好,受益长久"的事。每次换机器或者初始化新服务器,重走一遍流程既费时又容易遗漏细节。把这些步骤沉淀成脚本和配置文件,托管到 Gist 上,用 curl | bash 一键拉取,是我目前觉得最顺手的方式。
这套环境的核心是两个工具:
- tmux:终端复用器,管理会话、窗口、面板,配上持久化插件后关机重启也不丢失工作现场。
- Neovim:以 NvChad 为基础的编辑器,开箱即用,插件生态完善。
一、macOS 一键初始化
适用于新 Mac 换机或重装系统后的快速恢复。
curl -fsSL https://gist.githubusercontent.com/newset/309be330c300bb004df890cd14c3f92e/raw/setup-mac.sh | bash
脚本内容很简洁,做了三件事:
# 安装 neovim 和 tmux
brew install neovim tmux
# 配置 tmux(oh-my-tmux + tpm,详见下文)
curl -fsSL https://gist.githubusercontent.com/newset/f702d56e55a20c4e85c239b15b090be5/raw/tmux-install.sh | bash
# 初始化 Neovim(基于 NvChad starter)
git clone https://github.com/NvChad/starter ~/.config/nvim && nvim
Neovim 启动后会自动触发 lazy.nvim 拉取插件,等待安装完成即可。NvChad 提供了开箱即用的 LSP、文件树、模糊搜索等常用功能,适合作为个人配置的起点。
二、tmux 配置详解(oh-my-tmux + tpm)
这是整套环境里配置最丰富的部分。
安装
curl -fsSL https://gist.githubusercontent.com/newset/f702d56e55a20c4e85c239b15b090be5/raw/tmux-install.sh | bash
安装完成后,启动 tmux,按 Prefix + I 安装插件。
脚本依次完成以下步骤:
- 通过 Homebrew 安装 JetBrains Mono Nerd Font(状态栏图标字体依赖)
- 克隆并安装 oh-my-tmux
- 从 Gist 下载个人
tmux.conf.local配置文件 - 克隆 tpm(tmux 插件管理器)
功能特性
剪贴板支持是这套配置的重点之一,解决了 tmux 里复制内容无法同步到系统剪贴板的老大难问题。配置开启了 tmux_conf_copy_to_os_clipboard=true,并通过自定义右键菜单(MouseDown3Pane)让 Copy 操作直接调用 pbcopy。
具体交互方式如下:
| 按键 / 操作 | 动作 |
|---|---|
Ctrl+B | Prefix 键 |
Prefix + [ | 进入复制模式 |
v | 开始选择(复制模式内) |
y | 复制到系统剪贴板 |
| 鼠标拖拽 | 自动复制到系统剪贴板 |
| 右键 | 弹出上下文菜单,Copy 同步到剪贴板 |
Prefix + I | 安装插件 |
Prefix + u | 更新插件 |
Prefix + g | 弹出浮动终端(80% 宽高) |
启用的插件列表:
tmux-resurrect:保存/恢复 tmux 会话(包括 ssh、nvim 等进程)tmux-continuum:自动持续保存会话,开机自动恢复(@continuum-restore 'on')tmux-sensible:一组合理的默认配置tmux-sidebar:侧边文件树tmux-power:状态栏主题(使用 Everforest 配色)tmux-fzf:fzf 集成,快速切换会话/窗口
其他关键配置:
- vi 复制模式(
set -g mode-keys vi) - 鼠标模式开启(
set -g mouse on) - 扩展按键支持(
set -g extended-keys on) - 新面板保留当前路径(
tmux_conf_new_pane_retain_current_path=true) - 24-bit 真彩色自动检测
- 状态栏右侧显示:电池、时间、日期、用户名、主机名
- 状态栏左侧显示:会话名、系统运行时长
会话恢复范围也做了定制,在重启后自动恢复以下进程:
set -g @resurrect-processes 'ssh mclaude mc nvim vi'
更新配置
如果本地修改了 tmux.conf.local,可以用 GitHub CLI 推回 Gist:
gh gist edit f702d56e55a20c4e85c239b15b090be5 ~/.config/tmux/tmux.conf.local
三、CentOS 云服务器初始化:源码编译 tmux 3.x
这套方案的背景是云服务器的日常运维场景:每次新开一台 ECS/CVM,系统是 CentOS,默认只有 root 权限和基础 yum 仓库,没有 Homebrew,也没有现代版本的 tmux。CentOS 官方仓库里的 tmux 版本通常停留在 1.x,缺少鼠标支持、真彩色、popup 浮窗等特性,与 Mac 上的使用体验差距很大。
因此需要从源码编译安装 tmux 3.x,一次搞定,后续复制快照或再开新机时直接复用。
curl -fsSL https://gist.githubusercontent.com/newset/236d7b0f6bf8b4fd8c4401f75384a56f/raw/tmux-install.sh | bash
脚本以 tmux 3.4 为目标版本,安装到 /root/local(无需 sudo 写入系统目录),完整流程如下:
# 步骤 1:安装构建依赖(yum 环境)
sudo yum install -y gcc make ncurses-devel libevent-devel
# 步骤 2:下载源码
curl -L -o tmux-3.4.tar.gz https://github.com/tmux/tmux/releases/download/3.4/tmux-3.4.tar.gz
# 步骤 3-6:解压、配置、多核编译、安装
tar -xzf tmux-3.4.tar.gz && cd tmux-3.4
./configure --prefix="/root/local"
make -j$(nproc)
make install
# 步骤 7:写入 PATH(自动追加到 .zshrc 和 .bashrc,幂等处理)
export PATH="/root/local/bin:$PATH"
脚本对 PATH 的写入做了幂等判断——如果 rc 文件里已经有 /root/local/bin,不会重复追加。安装完成后验证版本:
/root/local/bin/tmux -V
# 输出:tmux 3.4
新 Shell 会话中 tmux 会自动可用,无需手动 export。
关于云服务器的使用习惯: 在云服务器上,tmux 的价值比本地更突出——SSH 断连不会丢失正在运行的任务,多窗口管理日志、编辑器、命令行也比开多个 SSH 连接更高效。结合 tmux-resurrect 的手动保存(Prefix + Ctrl+S),即使服务器重启,工作现场也能快速恢复。
总结
三个 Gist 各司其职,形成了一套可复现的环境配置体系:
- setup_mac.sh:Mac 入口,串联 tmux 配置和 Neovim 初始化
- tmux-install.sh(Mac 版) :oh-my-tmux + tpm + 剪贴板增强的完整配置
- tmux-install.sh(CentOS 版) :无 Homebrew 环境下的源码编译方案
最终效果是:换机或初始化新服务器时,一条 curl | bash 搞定核心开发环境,省去大量重复劳动。
Gist 地址: