我安装了 Ubuntu 11.10。然后为 Gnome 终端下载 Solarized 主题。从终端我的 vim 看起来不错:插件 vim-powerline 显示正确,语法以正确的颜色突出显示。但是当我运行 tmux 并运行 vim 时 - 语法高亮仅使用一种基本颜色,而 vim-powerline 不显示任何颜色。我查看了 vim-powerline 上的常见问题解答,解决方案应该是 .tmux-config 中的这一行:
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我查看了 TERM,它返回了 'xterm',所以我尝试了:
set -g default-terminal "xterm-256color"
Run Code Online (Sandbox Code Playgroud)
但这也无济于事。
这是 .tmux.config 中唯一的一行。在 .vimrc 我有以下几行:
call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized
Run Code Online (Sandbox Code Playgroud)
Hol*_*rel 57
使用以下标志启动 tmux 为我解决了这个问题:
tmux -2
Run Code Online (Sandbox Code Playgroud)
来自 tmux 手册页:
-2 强制 tmux 假设终端支持 256 色。
小智 34
这对我有用
在 .tmux.conf
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
在 .vimrc
set term=screen-256color
Run Code Online (Sandbox Code Playgroud)
删除 .vimrc 的旧术语值,相信我这会起作用
Ram*_*oid 30
我在使用 Byobu 5.17 和 tmux 1.5 的 Ubuntu 10.04 LTS 上遇到了同样的问题,使用来自 GitHub 存储库的最新 Solarized。
我能够通过$TERM在.bashrc文件中指定来部分解决这个问题:
export TERM="xterm-256color"
似乎在启动板上也有一个错误,但尚未解决: byobu 未正确显示 dircolors
在我看来,似乎没有人知道在说什么......
\ntmuxvim/nvim打开终端(无论你使用哪个 - 我使用st)并编写命令:
\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 $ \xe2\x94\x82 ziga > ziga--workstation > ~\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x98\n \xe2\x94\x94\xe2\x94\x80> echo $TERM\n\nst-256color\nRun Code Online (Sandbox Code Playgroud)\n作为答案,我得到了一个字符串,因为该字符串被编译为(检查此处)中的st-256colorC 字符串文字。无论您使用哪个终端,情况都是类似的。在二进制文件中的某处有一个字符串文字,在终端启动时将其设置为环境变量。termnamest TERM
在这里你除了记住这个字符串之外什么也做不了。
\n现在让我们继续这个链... 在您的终端之后tmux打开。在配置文件中,我现在必须首先确保识别我的终端设置的环境变量。所以我这样写:~/.tmux.confTERM
set-option -sa terminal-overrides ",st*:Tc"\nRun Code Online (Sandbox Code Playgroud)\n此行检查环境变量是否以(therefore )$TERM开头,并确保使用真彩色 ( ),因为当前的“索引颜色” (8 位 = 2^8 = 256 颜色)对我们来说不够。我们想要使用“真彩色” (24 位 = 2^24 = 16777215 种颜色)。在这里,我们可以添加更多行,以确保我们能够匹配 的值。在我的例子中,下面的行也有效,因为它在 的中间搜索:st st*Tc tmux TERM256colTERM
set-option -sa terminal-overrides ",*256col*:Tc"\nRun Code Online (Sandbox Code Playgroud)\n如果我要使用xfce4-terminal该集合,TERM = xterm-256color我可以使用这样的行:
set-option -sa terminal-overrides ",xterm*:Tc"\nRun Code Online (Sandbox Code Playgroud)\n到目前为止已经tmux涵盖了。但在我们继续这个链条之前,我们必须确保tmux也会导出它的环境变量TERM。
在这种情况下,我们可以使用以下行将其设置为我们想要的任何内容~/.tmux.config:
set -g default-terminal "tmux-256color"\nRun Code Online (Sandbox Code Playgroud)\n现在确保退出tmux并终止它的服务器:
tmux kill-server\nRun Code Online (Sandbox Code Playgroud)\n然后tmux使用命令进入tmux并执行命令:
\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 $ \xe2\x94\x82 ziga > ziga--workstation > ~\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x98\n \xe2\x94\x94\xe2\x94\x80> echo $TERM\n\ntmux-256color\nRun Code Online (Sandbox Code Playgroud)\n你应该得到答案tmux-256color。现在我们可以继续vim...
在最后一步中,我们只需vim在其配置文件中添加此行即可进行配置~/.vimrc:
if exists(\'+termguicolors\') && ($TERM == "st-256color" || $TERM == "tmux-256color")\n let &t_8f = "\\<Esc>[38;2;%lu;%lu;%lum"\n let &t_8b = "\\<Esc>[48;2;%lu;%lu;%lum"\n set termguicolors\nendif\nRun Code Online (Sandbox Code Playgroud)\n这正确地设置了转义序列&t_8f,&t_8b并最终在内部设置了“真实颜色”vim。但这仅当TERM值为:
st-256color vim(当我直接在终端中打开而没有在此之前st打开时)tmux
tmux-256color (当我vim已经进入时打开tmux)
如果您使用多个终端,则应在此处添加它们,如下所示:
\nif exists(\'+termguicolors\') && ($TERM == "st-256color" || $TERM == "tmux-256color" || $TERM == "xterm-256color")\n let &t_8f = "\\<Esc>[38;2;%lu;%lu;%lum"\n let &t_8b = "\\<Esc>[48;2;%lu;%lu;%lum"\n set termguicolors\nendif\nRun Code Online (Sandbox Code Playgroud)\n否则颜色将无法在所有终端上工作...祝你好运!
\n应在 ~/.tmux.conf 中将终端类型设置为 screen-256color。它告诉 tmux 如何设置 TERM 环境变量,因此它不适用于当前会话 - 启动一个新会话然后进行测试。
如果仍然不起作用,您可以使用以下命令运行 Vim:
TERM=screen-256color vi
Run Code Online (Sandbox Code Playgroud)
这只是为一次性 vi 执行设置环境变量。
如果这不能使 vim 显示所有颜色,请测试您的终端(我不确定您是否仅使用一个终端仿真器进行测试)是否已编译为支持 256 调色板 - 从以下位置下载并运行以下 Perl 脚本有问题的终端模拟器。
http://scie.nti.st/dist/256colors2.pl
附言。我想您已经纠正了乔丹布罗克注意到的拼写错误。