在 TMUX 模式下丢失 VIM 配色方案



我正在运行 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

如果您使用 tmuxinatormux ,则需要在 .bashrc.zshrc 中添加这些:

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

这些强制在终端中使用 256 色。

然后tmuxtmuxinatormux命令都将起作用。

我已经删除了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 颜色:

  1. 终止所有运行tmux kill-server的 tmux 会话

  2. ~/.tmux.conf 中为 tmux 创建用户配置文件

  3. 将以下行添加到.tmux.conf

    set -g default-terminal "tmux-256color" set -ga terminal-overrides ",xterm-termite:Tc"

  4. 在命令行echo $TERM中运行

  5. 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-256colorscreen-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-256colorscreen-256color .使用它们替换上述代码中的tmux-256color。不过,我觉得没有必要。

您可能会遇到两个问题之一,并且可能同时遇到两个问题。

默认终端

  1. tmux 中的 $TERM 值不支持颜色,或者不支持所需的颜色。也许是screen,是单色的。

通过修改default-terminal来更改此设置。可能使用

set -g default-terminal "tmux-256color"

screen.xterm-256colorscreen-256color等。

设置术语颜色

  1. vim 颜色设置与终端和/或 tmux 不兼容。

为了在 vim 中使用真彩色,您通常

set termguicolors

但这仅适用于xterm*.在你的.vimrc使用它来很好地玩xterm,以及其他screentmux变体。

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 内部和外部,术语变量是相同的。

相关内容

  • 没有找到相关文章

最新更新