如何配置PowerShell、Windows Terminal或ConEMU,实现SSH连接Linux主机时的完整xterm-color终端色彩能力?
如何配置PowerShell、Windows Terminal或ConEMU,实现SSH连接Linux主机时的完整xterm-color终端色彩能力?
我之前也碰到过这种公司限制下的终端色彩问题,折腾了好一阵才把这几个工具的配置都捋顺了,给你一步步说清楚:
Windows Terminal(最推荐,色彩兼容性最好)
- 打开Windows Terminal,按
Ctrl+,调出设置界面。 - 在左侧找到你用来SSH的配置文件(比如PowerShell、Command Prompt),点击进入详情页。
- 往下翻找到「环境变量」区域(新版是在「高级」分类下的「环境变量」,或者直接在JSON配置里找
env字段),添加一行:
要是想要更细腻的256色效果,也可以把值改成"env": { "TERM": "xterm-color" }xterm-256color,现在大部分Linux发行版都支持这个。 - 保存设置后重启Windows Terminal,SSH连接到Linux主机,先输入
echo $TERM确认变量已经生效,再打开vim或emacs试试语法高亮,应该就能正常显示了。
单独使用PowerShell时的配置
如果不用Windows Terminal,直接用原生PowerShell窗口:
- 先在PowerShell里输入
$PROFILE,找到你的个人配置文件路径(一般是C:\Users\<你的用户名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1),如果文件不存在就手动新建一个。 - 在这个配置文件里添加一行:
$env:TERM = "xterm-color" - 保存后重启PowerShell,再SSH连接Linux,验证TERM变量后测试编辑器色彩即可。
ConEMU的配置
- 打开ConEMU,按
Win+Alt+P调出设置窗口。 - 在左侧菜单里找到「Environment」(环境)选项卡。
- 在「Set environment variables」的输入框里添加:
TERM=xterm-color - 点击「Save settings」保存,重启ConEMU后再SSH连接Linux,就能生效了。
额外注意事项
- 有些Linux主机的shell配置(比如
~/.bashrc或~/.zshrc)可能会自动覆盖TERM变量,你可以登录后检查一下这些文件,如果有设置TERM的行,要么注释掉,要么改成和你本地一致的值。 - 要是xterm-color还是有小问题,优先试试
xterm-256color,它的兼容性现在比xterm-color更好,色彩表现也更丰富。 - 最后别忘了确认Linux主机上的编辑器本身开启了语法高亮:vim可以临时输入
:syntax on,或者在~/.vimrc里加syntax on;emacs可以用M-x global-font-lock-mode开启,或者在配置文件里加(global-font-lock-mode t)——如果公司不让改个人配置,用临时命令就行。
备注:内容来源于stack exchange,提问作者HippoMan




