我尝试在网上应用各种配色方案。无论我选择何种方案,背景都保持白色,即使应用方案的屏幕截图显示背景应该是彩色的。
在某些方案中,某些背景会改变颜色,但包含文字的线条的空间右侧仍保持白色。
我在Mac上使用Vim 7.2。我刚刚开始搞乱非gui应用程序,所以一切都应该是开箱即用的。
终端窗口的整体设置是否与它有关?
运行macvim时,一切看起来都不错。它只是从终端启动vim时看起来很奇怪..
答案 0 :(得分:43)
我在.vimrc中有这个,它在使用PuTTY时解决了这个问题。
set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE
在.vimrc中的ctermbg设置之前加载colorscheme非常重要,因为它们需要覆盖colorscheme设置的相同颜色。这也意味着你不能在Vim运行时切换colorscheme并期望它能够工作。
答案 1 :(得分:28)
我正在添加第二个答案,因为它与我的第一个答案非常不同,可能指出实际问题。
如果你在这里查看colorscheme的实际网站: Molokai website
你会看到一个与你非常相似的问题。这里给出了答案,建议在vimrc中尝试命令:set t_Co=256
以查看它是否修复了问题:
“ - 确保你使用的是256色的控制台终端;并非它们全部都有(特别是在Mac上)。你可能需要通过在你的”set t_Co = 256“上明确强制Vim使用它.vimrc文件。 - Windows控制台很好......完全不受支持,只有16种颜色,所以它很乱“
答案 2 :(得分:14)
在linux中,export TERM=xterm-256color
中有.bashrc
。这导致vim看起来像这样(在设置set t_Co=256
之后):
当我从.bashrc
删除该行并打开一个新终端(exec bash
没有做到)时,这就是我得到的:
答案 3 :(得分:7)
终端通常限制为256种颜色,而GUI仅受桌面环境颜色深度的限制,通常为2 ^ 32。
因此,即使有很多可用的vim配色方案,隐式地它们通常是为GUI设计的,并且不适用于终端版本。
如果你看vim.org上的配色方案,通常会提到GUI或256.所以你必须根据具体情况选择使用哪个。
要将GUI方案转换为终端,您可以使用以下插件: CSApprox
您还可以根据上下文使用不同的colorscheme,在.vimrc中添加以下内容:
if has("gui_running")
colorscheme [using any color you want]
else
colorscheme [using 256 colors]
endif
答案 4 :(得分:5)
我认为问题可能是colorscheme改变默认颜色的方式。我看了一些仅仅通过以下方式设置默认值的colorschemes:
set background=light
或
set background=dark
不确定这些的限制是什么。我不认为那些在终端工作。
在任何情况下,您都应该能够使用“正常”突出显示在终端中手动设置背景。在colorscheme文件中的大多数'hi'命令之前将其插入一个位置,它应该提供它们将使用的默认值。例如:
hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White
将ctermfg(彩色终端前景)和ctermbg(彩色终端背景)更改为您想要的任何颜色(或者您希望在colorscheme中看到但现在看不到的任何颜色)。 (请记住,如果colorscheme已经有hi Normal的设置,那么这可能不是你的问题。)
对于ctermbg和ctermfg,您可以输入颜色名称,但我认为只有相当有限的数字: 黑色 深蓝 深绿色 深青绿 深红 深洋红 布朗,DarkYellow LightGray,LightGrey,灰色,灰色 DarkGray,DarkGrey 蓝色,浅蓝色 绿色,LightGreen 青色,LightCyan 红色,LightRed 洋红色,LightMagenta 黄色,淡黄色 白
否则,您应该能够使用0到255之间的数字代替颜色名称。或者这个脚本提供了粗略的想法,并让您看到如何设置使用更多的颜色名称: Vim script with color settings
此外,还有许多脚本可以帮助您使用或转换为gui编写的colorschemes,以便与cterm一起使用。 。E.g,:
Does the overall settings for the terminal window have something to do with it?
也许,但我很确定正确编写的Vim colorscheme会覆盖您所做的任何终端设置。至少他们在Windows和Ubuntu上为我做。 。
答案 5 :(得分:4)
我遇到了同样的问题,发现这个问题的答案实际上是三重的,只修复三个中的两个是不够的。你需要:
您终端中的256色支持 - 使用默认设置的Putty确实有此
Vim必须认识到终端具有256色功能:.vimrc中的“set t_Co = 256”将会这样做
配色方案需要支持带有ctermbg和ctermfg属性的彩色终端,而不仅仅是gui * -versions。 http://www.vim.org/scripts/script.php?script_id=2682应该能够自动提供这些,而CSApprox我肯定会使用它,但需要+ gui编译的Vim或最近的Vim版本(7.3或更新版本)。
第三个似乎是最常错过的要求。我今天早上在这个问题上写了一篇关于这个问题的短篇小说:http://codeandlife.com/2013/09/22/vim-colorschemes-with-putty-aka-gui-vs-xterm-color256/
在尝试不同设置时发生在我身上的最终问题是,当颜色确实有效时,只有带文字的屏幕区域才有正确的背景颜色。重新检查Putty Terminal设置“使用背景颜色擦除屏幕”为我修复了最后一期。
答案 6 :(得分:3)
终端窗口的整体设置是否与它有关?
是的,终端参数会覆盖vim参数(至少在OSX和iTerm中)。例如,我在/ Users / [username] / .bashrc
中有以下脚本setBackground() {
osascript -e "tell application \"iTerm\"
set current_terminal to (current terminal)
tell current_terminal
set current_session to (current session)
tell current_session
set background color to $1
end tell
end tell
end tell"
}
vim() {
(setBackground "{65025,65025,65025}" &)
(exec vim $*)
}
上面重新映射终端vim命令以在执行vim之前执行背景颜色更改。背景颜色函数是applescript(我从某处复制了脚本......)。它适用于iTerm。我相信你可以调整它以适应终端(苹果产品+苹果脚本 - >应该工作)。
BR,
尤哈
答案 7 :(得分:2)
您需要将set termguicolors
添加到您的〜/ .vimrc
我测试了t_Co=256
和其他选项,但没有一个起作用,只有set termguicolors
此后,您可以使用命令set bg=light
或set bg=dark
来查看女巫看起来更好(某些vim配色方案接受这两种选择)。
以下是与termguicolors兼容的端子的列表:https://gist.github.com/XVilka/8346728#now-supporting-true-color
答案 8 :(得分:0)
这适用于切换背景:
colorscheme hemisu
function! g:ToggleBackground()
if &background != 'dark'
set background=dark
else
set background=light
colorscheme hemisu
endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>
同时尝试将浅色背景设置为ctermbg=231
,以便tmux更好地处理它。
答案 9 :(得分:0)
如果您使用 Vim 通过 SSH :
,请使用此规则添加到您当地的.bashrc
:
export TERM=xterm-256color
从.bashrc
移除任何TERM
个定义。
如果您在本地和远程使用相同的.bashrc
,请使用临时环境变量,从不全局设置TERM
:
alias color-ssh='TERM=xterm-256color ssh user@host'
答案 10 :(得分:0)
我也遇到类似的问题,即压痕指南(nathanaelkane的vim-indent-guides)的背景色无法显示在Windows Cygwin的薄荷终端中。
我在〜/ .minttyrc中用一行Term=xterm-256color
解决了这个问题(相当于通过mintty的Options GUI设置:Terminal-> Type-> xterm-256color
。这产生了export TERM=xterm-256color
如果没有此设置,则薄荷味默认为TERM =“ xterm”,这将导致vim的t_Co=8
(而不是t_Co=256
)并且无法显示某些背景色。
清单:
echo $TERM
应该为xterm-256color
。:set t_Co
应该给t_Co=256
。