我正在运行iterm2,当我在tmux模式下,我在vim中设置的配色方案不显示。只有我设定的配色方案。如果我从shell运行vim,配色方案显示正确-只有当我在tmux模式。

我尝试过在vim中设置:colorscheme molokai(见下面的截图),它没有改变-再次,iterm2的默认配色方案保持不变。

我是否遗漏了对iterm或tmux.conf的一些设置?我的图都在github上。


当前回答

I just discovered why I was having a lot of confusion. I, like others here, was having a difficult time getting the default-terminal setting to take effect. I remembered that I had a tmux session in the background. I re-attached my session, closed out my processes, and closed ALL tmux processes. The next time I restarted tmux the default-terminal setting in .tmux.conf began to take effect. I don't know if others are doing this as well but I recommend closing all tmux processes before modifying the .tmux.conf file.

我让我的设置在我的本地机器上工作(OSX 10.9.5 with iTerm2),没有对.bashrc或.bash_profile进行任何修改。我所做的只是将行set -g default-terminal "xterm-256color"添加到~/.tmux.conf并重新启动所有tmux进程。

我让我的远程设置(ssh到Ubuntu 14.04)以完全相同的方式工作,而不需要对.bashrc进行任何修改。我只是在远程机器上的~/.tmux.conf中添加了set -g default-terminal "xterm-256color",并重新启动了所有远程tmux进程。

你可以在tmux会话中通过echo $TERM来测试Vim所看到的内容。它一直将screen作为值,直到我重新启动所有tmux进程,此时它如预期的那样反射xterm-256color。

希望这能有所帮助。

其他回答

这有点过时,但值得一提的是,使用screen通常会破坏Home和End键。使用

export TERM="xterm-256color"

它应该保持这些功能,并允许配色方案(或电力线)工作良好。

正如上面提到的@romainl,我需要通过添加-2标志来强制tmux使用256种颜色:

$ tmux -2

我添加了别名tmux='tmux -2'到我的bash_profile,所以,我不会忘记:)

我使用的是Ubuntu bionic 18.04.4 LTS和tmux 2.6。 我也有同样的问题,它可以通过简单地将此添加到.bashrc来解决

export TERM=screen-256color

当然,别忘了注明出处。 源~ / . bashrc

或者重启你的终端机

如果你使用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命令都将工作。

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- rehat -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

方法一:有效。

检查tmux会话中的$TERM值。得到

[u@loc ~]$ echo $TERM
screen
[u@loc ~]$ tput colors
8

因此,只需在tmux会话中设置export TERM=screen-256color。此方法仅在会话的当前窗格中有效。


方法二:有效。

创建~/.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会话。

我还尝试了~/.tmux.conf中的xterm-256color和screen-256color。它们都可以很好地为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配色方案更改、256-color-support-for-vim-background-in-tmux、get -256-colors-to-work- tmux、tmux-term-and-256- colors- support