我正在运行 iterm2,当我处于 tmux 模式时,我在 vim 中设置的配色方案没有显示。只有我在 iterm 中设置的配色方案。如果我从 shell 运行 vim,配色方案看起来是正确的 - 它仅在我处于 tmux 模式时。
我尝试在 vim 中设置:colorscheme molokai
(见下面的屏幕截图),它没有改变 - 同样,iterm2 的默认配色方案仍然存在。
我是否缺少iterm或tmux.conf的一些设置?我的点在github上。
我遇到了同样的问题。唯一的区别是我使用的是solarize
而不是molokai
。
为了解决这个问题,我在~/.bashrc
中设置了一个别名:
alias tmux="TERM=screen-256color-bce tmux"
并在~/.tmux.conf
中设置default-terminal
选项:
set -g default-terminal "xterm"
最后,$ source ~/.bashrc
加载新别名。
我尝试了上面的所有解决方案,最终对我有用的是将以下行放在.tmux.conf
:
set -g default-terminal "xterm-256color"
正如上面提到的@romainl,我需要通过添加 -2
标志来强制 tmux 使用 256 种颜色:
$ tmux -2
我在bash_profile中添加了alias tmux='tmux -2'
,所以,我不会忘记:)
我刚刚发现为什么我有很多困惑。我和这里的其他人一样,很难让默认终端设置生效。我记得我在后台有一个 tmux 会话。我重新附加了我的会话,关闭了我的进程,并关闭了所有 tmux 进程。下次我重新启动 tmux 时,.tmux.conf
中的默认终端设置开始生效。我不知道其他人是否也在这样做,但我建议在修改.tmux.conf
文件之前关闭所有 tmux 进程。
我的设置可以在我的本地机器(带有 iTerm2 的 OSX 10.9.5)上运行,而无需对 .bashrc
或 .bash_profile
进行任何修改。我所做的只是将行set -g default-terminal "xterm-256color"
添加到~/.tmux.conf
并重新启动所有 tmux 进程。
我让我的远程设置(ssh 到 Ubuntu 14.04)以完全相同的方式工作,而无需对.bashrc
进行任何修改。我只是将set -g default-terminal "xterm-256color"
添加到远程计算机上的~/.tmux.conf
,然后重新启动所有远程 tmux 进程。
您可以通过在 tmux 会话中执行echo $TERM
来测试 Vim 所看到的内容。它一直说screen
作为值,直到我重新启动所有 tmux 进程,此时它按预期反映了xterm-256color
。
希望有帮助。
所以这有点过时,但可能值得一提的是,使用屏幕通常会破坏主页和结束键。用
export TERM="xterm-256color"
它应该保持这些功能的功能,并允许配色方案(或电力线)正常工作。
我需要 vim 才能在 ubuntu 的终端和 Windows 上的 cygwin/mintty 中使用 tmux 正确显示。我通过组合这样的答案来让它工作。
在 .bashrc 中:
alias tmux="tmux -2"
在 .vimrc 中:
" use 256 colors in terminal
if !has("gui_running")
set t_Co=256
set term=screen-256color
endif
" fix cursor display in cygwin
if has("win32unix")
let &t_ti.="e[1 q"
let &t_SI.="e[5 q"
let &t_EI.="e[1 q"
let &t_te.="e[0 q"
endif
基于这个问题的答案,这个 Vim wiki 页面和这个块光标问题
如果有人需要 24 位颜色支持:
Tmux 从版本 2.2 开始支持 24 位颜色。如果您的终端支持 24 位颜色,请将您的终端添加到终端覆盖设置中。例如
set -ga terminal-overrides ",xterm-256color:Tc"
我的环境清单:
- macOS Sierra 10.12.3
- iTerm2 3.0.14(报告终端类型为
xterm-256color
) - neovim 0.1.7 (通过添加:
xterm-256color
到.vimrc
来启用 24 位颜色) - TMUX 2.3 (将
set -ga terminal-overrides ",xterm-256color:Tc"
添加到.tmux.conf
)
我不需要添加任何其他.bashrc
或.zshrc
.
希望这能有所帮助。
由于这是谷歌上的第一个结果,并且由于上述方法都没有帮助。想发布这个,以便有人可能会觉得有帮助
在.vimrc
:
set background=dark
set t_Co=256
呵呵
我已经尝试了上面的所有说明,我发现最重要的是我必须在我的 .bashrc 文件中明确添加以下行。
export TERM=screen-256color
我不知道为什么别名 tmux="TERM=screen-256color-bce tmux" 不起作用。我使用 Sierra 10.12.1。
只是不得不处理这个问题,尽管之前发布的所有答案都有帮助,但在我的情况下,它们并没有解决问题。
我的问题已通过删除.vimrc
中的以下行得到解决:
set termguicolors
无论如何,这是用另一个指令来回应的。
现在,在我的.tmux.conf
以前的 anwsers 中找到以下行:
export TERM="screen-256color"
一切都很好,色彩缤纷。
我正在使用 gnome 终端,这解决了问题,但是 (0) 不要忘记:
killall tmux
(1) 编辑 .tmux.conf
# 24 bit color
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"
(2) 编辑: .vimrc
" Enable true color
if exists('+termguicolors')
let &t_8f = "<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
endif
Rinetd 发布的解决方案 关于 tmux 回购问题:https://github.com/tmux/tmux/issues/1246
在 .tmux.conf 中添加以下行对我有用 macOS Sierra 10.12.6,
设置 -g 默认终端"屏幕-256color"
如果你发现自己和我坐在同一个位置,以上都不起作用。 试试这个:
在.tmux.conf
:
set -g default-terminal "xterm"
在 bash 配置中(可能是 .bashrc
或 .bash_profile
alias tmux="tmux -2"
然后运行:
killall tmux
然后重新启动 TMUX
如果您使用 tmuxinator
或 mux
,则需要在 .bashrc
或 .zshrc
中添加这些:
alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'
这些强制在终端中使用 256 色。
然后tmux
、tmuxinator
和mux
命令都将起作用。
我已经删除了set termguicolors
行,但它不起作用。在.vimrc
中设置set notermguicolors
是有效的。
为了设置正确的颜色并摆脱 Ubuntu 和 Mac 中的渲染问题:
检查这个
在 tmux 手册页中,添加如下标志:
tmux -2
此-2
标志强制 tmux 在 256 色模式下运行。
这对我有用
在我的.tmux.conf中使用这两行对我有用,我正在使用Ubuntu 20.04和Alacritty。
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",alacritty:RGB"
在 alacitty 的回购问题中找到了它们,在 YodaEmbedding 提供的评论中:
https://github.com/alacritty/alacritty/issues/109
我在尝试导出不同的TERM
或在.tmux.conf
中设置默认终端时没有太多运气。
我在 tmux 中修复 vim 颜色的解决方案是将这一行添加到.tmux.conf
:
set -g terminal-overrides 'xterm:colors=88'
我不确定为什么需要此覆盖,因为我和我的TERM=xterm
也将 iTerm 设置为 xterm,但它似乎有效。
我正在使用Ubuntu bionic 18.04.4 LTS和tmux 2.6。我有同样的问题,只需将其添加到 .bashrc 中即可解决
export TERM=screen-256color
当然,不要忘记采购它。 source ~/.bashrc
或者只是重新启动您的终端
假设您已经有与您的终端匹配的 vim 颜色:
-
终止所有运行
tmux kill-server
的 tmux 会话 -
在
~/.tmux.conf
中为 tmux 创建用户配置文件 -
将以下行添加到
.tmux.conf
:
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",xterm-termite:Tc"
-
在命令行
echo $TERM
中运行 -
将
xterm-termite
替换为echo $TERM
返回的输出
ENV:
Fedora 29 工作站x86_64,GNOME 终端 3.30.1
VIM - Vi IMproven 8.1 (2018 年 5 月 18 日,编译于 Mar 8 2019 09:25:44)
GNU bash, version 4.4.23(1)-release (x86_64-redhat-linux-gnu)
TMUX 2.7
VIM 正在使用日光方案。
.vimrc
...
let g:solarized_termcolors=256
let g:solarized_termtrans=1
syntax enable
set background=dark
colorscheme solarized
...
bash中$TERM
的值为:
[u@loc ~]$ echo $TERM
xterm-256color
[u@loc ~]$ tput colors
256
<小时 />梅霍德1:作品。
检查 tmux 会话中的$TERM
值。获取
[u@loc ~]$ echo $TERM
screen
[u@loc ~]$ tput colors
8
因此,只需在 tmux 会话中设置export TERM=screen-256color
即可。此方法仅适用于会话的当前窗格。
方法2:有效。
创建~/.tmux.conf
文件并向该文件添加set -g default-terminal "tmux-256color"
。
或只是运行echo "set -g default-terminal "tmux-256color"" > ~/.tmux.conf
然后终止所有 tmux 会话。
启动新会话并检查 tmux 会话中的$TERM
值。获取
[u@loc ~]$ echo $TERM
tmux-256color
[u@loc ~]$ tput colors
256
vim 着色方案适用于所有窗格和所有 tmux 会话。
我也尝试了xterm-256color
和screen-256color
~/.tmux.conf
.它们都可以很好地为 vim 方案着色。
顺便说一句,我的~/.bash_profile
,~/.bashrc
和~/.vimrc
中没有任何与此设置相关的配置。
另见 https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-a-256-colour-terminal,https://github.com/tmux/tmux/wiki/FAQ#why-do-you-use-the-screen-terminal-description-inside-tmux
其他有用的演讲包括 tmux #699 中的 Vim 配色方案更改、tmux 中 256 色支持、获取 256 色以在 tmux 中工作、tmux 术语和 256 色支持
我使用软呢帽34。
我把它添加到 .tmux.conf 文件
set -g default-terminal "xterm-256color"
然后将其添加到 .vimrc
set background=dark
set t_Co=256
我正在使用WSL2在Windows 20.04上运行ubuntu 11。
我最近从bash更改为zsh(使用oh-my-zsh)以实现更多的定制。下载了一些使用斜体字体的 vim 配色方案。他们中的大多数来自 https://vimcolorschemes.com/。
当我在 tmux 中使用 vim 时,外观完全搞砸了。
我设法让 tmux vim 看起来与正常运行完全相同。
以下是我的配置:
在.vimrc
中添加以下行:
if exists('+termguicolors')
let &t_8f = "<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
endif
在.tmux.conf
中添加以下行:
set -g default-terminal "tmux-256color"
set -g default-terminal "tmux-256color-italic"
set -ga terminal-overrides ",tmux-256color:Tc"
这将允许在 tmux 终端中使用彩色和斜体字体。
或者您可以使用echo $TERM
来查找您的终端配置。它应该是类似 xterm-256color
或 screen-256color
.使用它们替换上述代码中的tmux-256color
。不过,我觉得没有必要。
您可能会遇到两个问题之一,并且可能同时遇到两个问题。
默认终端
tmux
中的$TERM
值不支持颜色,或者不支持所需的颜色。也许是screen
,是单色的。
通过修改default-terminal
来更改此设置。可能使用
set -g default-terminal "tmux-256color"
或screen.xterm-256color
、screen-256color
等。
设置术语颜色
- vim 颜色设置与终端和/或 tmux 不兼容。
为了在 vim 中使用真彩色,您通常
set termguicolors
但这仅适用于xterm*
.在你的.vimrc
使用它来很好地玩xterm
,以及其他screen
,tmux
变体。
if !has('gui_running') && &term =~ '%(screen|tmux)'
let &t_8f = "<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "<Esc>[48;2;%lu;%lu;%lum"
endif
set termguicolors
签入术语应该更详细一些,以实际匹配带有颜色的变体,但这应该适用于大多数设置。
替代办法
- 假装
tmux
xterm
,其实不然。两个顶级答案都建议这种方法,但在手册中都有说明
要使 tmux 正常工作,必须将其设置为"screen"、"tmux"或它们的衍生物。
- 禁用 vims 真彩色支持。这不应该是必需的,但可以肯定的是,您可以禁用 24 位颜色支持并仅使用 256 种颜色。
在 Vim 中,你可以检查术语变量:
:设置期限?
在 tmux 内部和外部执行此操作,并比较它们。在这里,我将这一行放在 .vimrc 中以解决问题:
设置术语=xterm-256颜色
现在,在 tmux 内部和外部,术语变量是相同的。