我的终端开发环境配置手册:tmux + Neovim 从零到用

0 阅读5分钟

本文整理自个人 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 安装插件。

脚本依次完成以下步骤:

  1. 通过 Homebrew 安装 JetBrains Mono Nerd Font(状态栏图标字体依赖)
  2. 克隆并安装 oh-my-tmux
  3. 从 Gist 下载个人 tmux.conf.local 配置文件
  4. 克隆 tpm(tmux 插件管理器)

功能特性

剪贴板支持是这套配置的重点之一,解决了 tmux 里复制内容无法同步到系统剪贴板的老大难问题。配置开启了 tmux_conf_copy_to_os_clipboard=true,并通过自定义右键菜单(MouseDown3Pane)让 Copy 操作直接调用 pbcopy

具体交互方式如下:

按键 / 操作动作
Ctrl+BPrefix 键
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 地址: