终端配色需按实际使用的终端模拟器配置:gnome terminal用dconf图形设置,alacritty改yaml,wezterm改lua;ls/vim/man等工具还需正确设置ls_colors、term、less_termcap等环境变量。

终端配色改的是终端模拟器自身的配置,不是改 ~/.bashrc 或 /etc/profile;改错地方,重启终端也没用。
怎么确认自己用的是哪个终端模拟器
别猜,直接看进程或窗口标题:
- GNOME Terminal:通常在 Ubuntu/ Fedora 桌面默认,窗口顶部菜单栏有「文件」「编辑」「查看」等
- Konsole:KDE 桌面默认,标题栏常带「Konsole」字样
- Alacritty:无图形界面、启动极快,配置全靠
~/.config/alacritty/alacritty.yml - WezTerm:Rust 写的,配置是
~/.wezterm.lua,支持真彩色和分屏原生集成 - xterm / urxvt:命令行启动,常见于最小化安装或远程环境,配色靠启动参数(如
urxvt -bg black -fg green)或资源文件(~/.Xresources)
运行 ps -o comm= -p $PPID 可查父进程名,基本能定位。误以为自己在 GNOME Terminal 却去改 alacritty.yml,是新手最常踩的坑。
GNOME Terminal 怎么换内置配色方案
它不生成独立配置文件,所有设置存在 dconf 数据库里,必须通过图形界面操作才可靠:
- 打开终端 → 点右上角「≡」→「首选项」→ 左侧「配置文件」→ 选中当前配置(通常是「Unnamed」)→ 点右侧「颜色」标签页
- 取消勾选「使用系统主题中的颜色」,否则背景/文字色被桌面环境锁定
- 「文本颜色」和「背景颜色」可手动调色;「调色板」里 16 色块对应
LS_COLORS中的目录、可执行文件等类型染色 - 想复用别人配好的主题?导出当前配置:
gsettings get org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminals.ProfilesList default | tr -d \')/ palette,再导入到另一台机器
别试图去改 /usr/share/.../gnome-terminal 下的任何文件——那是只读系统路径,改了也不生效。
Alacritty 和 WezTerm 怎么加载自定义 YAML/Lua 配色
这两个是“配置即代码”型终端,改完必须重载或重启,且格式敏感:
- Alacritty:编辑
~/.config/alacritty/alacritty.yml,找到colors:块,替换整个 section。示例片段:
colors:
primary:
background: '0x1e1e2e'
foreground: '0xcdd6f4'
normal:
black: '0x1e1e2e'
red: '0xf38ba8'
green: '0xa6e3a1'
yellow: '0xf9e2af'
blue: '0x89b4fa'
magenta: '0xf5c2e7'
cyan: '0x94e2d5'
white: '0xbac2de'
- WezTerm:编辑
~/.wezterm.lua,确保有colors = { ... }表达式。注意 Lua 语法:字符串用单引号,table 键名后要加冒号,末尾不能多逗号 - 改完保存,按
Ctrl+Shift+R重载配置(WezTerm 支持热重载;Alacritty 不支持,必须关掉所有窗口再开) - 如果终端启动失败,检查 YAML 缩进是否为空格(不能用 tab)、Lua 是否有未闭合括号——错误日志在终端启动时会打印到 stderr,但一闪而过,建议用
alacritty --print-events 2>&1 | head -20排查
为什么换了终端配色,ls/vim/man 还是黑白
因为它们根本不读终端模拟器的配色,只认三样东西:环境变量、自身规则、TERM 声明。漏一个就失效:
-
ls:依赖LS_COLORS(由dircolors ~/.dircolors生成)+alias ls='ls --color=auto'+$TERM是xterm-256color(不是linux或空) -
vim:运行:set t_Co?,若返回t_Co=8,说明它只识别 8 色——大概率是 tmux 或 ssh 里$TERM被覆盖成screen,得在~/.tmux.conf加set -g default-terminal "screen-256color" -
man:靠LESS_TERMCAP_*环境变量,比如export LESS_TERMCAP_mb=$'\e[1;31m',必须写进~/.bashrc并source,且不能放在if [ -z $PS1 ]; then这类非交互式判断里
最易被忽略的一点:SSH 连远程服务器时,本地终端再炫酷也白搭——远程 $TERM 如果是 vt100,连 256 色都启不开。务必在 ~/.ssh/config 里加 SetEnv TERM=xterm-256color。











