題 tmux中的vim背景支持256色


在tmux中使用vim時,我可以看到啟用了256色支持。使用$ tput顏色

但是,在tmux中更改vim中的colorscheme將改變每行的colorscheme而不是整個背景。看截圖 enter image description here

以下是我的.vimrc文件的片段。我原來的colorscheme是深藍色,然後運行後:colorscheme molokai你看到會發生什麼。

信息

  • 侏儒末端
  • 慶典

在我的〜/ .tmux.conf中

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

在我的〜/ .vimrc中

    set t_Co=256

在我的〜/ .bashrc中

# ryan
export TERM="xterm-256color"
# ryan
alias tmux="tmux -2"

在我的〜/ .profile中

# ryan 256 color support
if [ -e /usr/share/terminfo/x/xterm-256color ]; then
    export TERM='xterm-256color'
  else
    export TERM='xterm-color'
  fi

我有什麼想法可以在vim中獲得完整的顏色變化嗎?我的文件片段看起來都不錯嗎?


96
2018-03-10 21:56


起源


如果在正常模式下按control-l或執行“:redraw”命令會發生什麼? - Heptite
@Heptite沒有任何反應仍然是每個線的顏色變化,如截圖中所示 - winchendonsprings


答案:


從.bashrc和.profile的外觀來看,tmux中的shell會覆蓋tmux conf中的'default-terminal'設置。像這樣的東西:

  • tmux創建了新的shell TERM=screen-256color
  • .bashrc / .profile運行,設置 TERM=xterm-256color
  • vim運行,嘗試對tmux使用不正確的TERM

你可以通過運行檢查這個

echo $TERM

在一個新鮮的tmux shell中。

關於正確設置終端,Tmux相對挑剔。如果可以,請在gnome-terminal的配置中設置術語值,而不是在.bashrc中。如果不這樣做,請檢查“screen”或“screen-256color”TERM來圍繞這些設置,並且在這種情況下不要重置它們。

Tmux真的想要終端設置 screen 要么 screen-256color


74
2018-03-10 23:57



那麼你修好了。我只是在我的.bashrc和我的.profile文件中註釋掉了與將顏色設置為256有關的任何內容。重新啟動的tmux和vim使用正確的背景和256色啟用。你能告訴我gnome-terminal配置文件在哪裡嗎?另外當你說tmux希望終端設置為'scfeen-256color時,你的意思是我在tmux.conf中擁有它嗎?謝謝 - winchendonsprings
我沒有一台帶有gnome-terminal的機器,方便檢查,但設置應該在GUI的某個地方,可能在“配置文件設置”或類似的東西下。 - bloy
還有,是的,讓tmux對它產生的shell做自己的事情。離開了 set -g default-terminal "screen-256color" 你的tmux conf中的行。 - bloy
所有上述內容都是我所追求的(確保TERM正確設置並且未在tmux中重寫),然後我必須使用'tmux -2'來加載tmux。 - phantomwhale
嘗試 if [[ $TERM == xterm ]]; then TERM=xterm-256color; fi,它對我有用。 - asymmetric


如此處所述,禁用 背景顏色擦除 (BCE)通過清算 t_ut 終端選項(運行 :set t_ut= 在Vim然後按 控制+大號 刷新終端的顯示),以便在tmux和GNU屏幕內使用Vim時顏色方案正常工作。


59
2018-03-07 18:46



這是唯一最終對我有用的東西! - Oz123
我最後補充道 set t_ut= 到我的vimrc,它不需要手動使用命令,因為會話開始時禁用BCE,所以不需要使用<kbd> Control </ kbd> + <kbd> L </ kbd>。 - erran
這在使用PuTTY時非常重要。當colorscheme具有背景時,所有TERM組合都會失敗。線程的重要補充。 - botimer
這是有效的,但是當應用此解決方案時,使用鼠標複製和粘貼也會復制並粘貼空格尾隨行(如果它們被突出顯示)。 - horse hair


我找到了一個更好的方法 這個帖子。您可以將tmux的別名設為 tmux -2 這將強制tmux假設shell使用256色終端。


17
2018-05-25 12:52





這對#Ubuntu和#Mac來說對我有用:

# File: ~/.bashrc (Ubuntu), ~/.bash_profile (Mac)
# for VIM and TMUC
if [ "$TERM" = "xterm" ]; then
  export TERM=xterm-256color
fi
alias tmux='tmux -2'  # for 256color
alias tmux='tmux -u'  # to get rid of unicode rendering problem

重新加載設置:

$ source~ / .bashrc#Ubuntu

$ source~ / .bash_profile#Mac

為Mac設置.bashrc(由tmux使用)

# File: ~/.bashrc (Mac)
source ~/.bash_profile

在〜/ .tmux.conf中設置“default-terminal”選項。

# File: ~/.tmux.conf
set -g default-terminal "screen-256color"  # Mac and Ubuntu

2
2018-01-03 06:59





快速解決方法是在終端中運行以下命令。

export TERM=xterm-color

你可以把它添加到你的 ~/.bash_profile 或其他配置文件始終在開始時設置。


1
2018-02-27 17:15



謝謝!這就是我需要添加到我的所有內容 .zshrc 使視覺模式真正可見。 - danmcardle


我對gnome-terminal + tmux + vim有類似的問題,但它也擴展到特定的組合鍵問題:。 我必須將幾件事情結合在一起。 首先,我必須將我的.tmux.conf設置為:

# Ensure terminal starts with its own colour scheme (helps Vim/Neovim themes to not break)
set -g default-terminal "xterm-256color"
# set -g default-terminal "screen-256color" # no S-Fx keys ;-(
# and ensure the key-codes are xterm alike
set -g xterm-keys on

然後在.vimrc中:

if $COLORTERM == 'gnome-terminal'
      set t_Co=256
endif
set t_ut=

這完成了鍵和背景的工作。


1
2017-08-01 10:37





剛剛面臨同樣的問題。基於 bloy答案和我~~ .profile的當前內容(實際上,它與...相同) winchendonsprings')我已經解決了我的問題如下:

~/.profile

if [[ -z $TMUX ]]; then
    if [ -e /usr/share/terminfo/x/xterm+256color ]; then # may be xterm-256 depending on your distro
        export TERM='xterm-256color'
    else
        export TERM='xterm'
    fi
else
    if [ -e /usr/share/terminfo/s/screen-256color ]; then
        export TERM='screen-256color'
    else
        export TERM='screen'
    fi
fi

邏輯很簡單:如果我們不在tmux會話中,那麼使用xterm(有色或無色)。屏幕也是如此。

也許它太冗長了,但你明白了。


0
2017-11-27 09:37