所以我目前正在使用控制台2对于我的命令行内容,背景 shell 只是来自cmd.exe
窗口。我的问题是,我在 vim 中将主题设置为“暮光”,它在 gVim 中运行正常,但当我通过命令行运行它时,颜色全都乱了。即使我使用默认的 Console2 主题或 Console2 的暮光主题,它们仍然会损坏。
为了说明:这是应该发生的事情:
但我最终得到的颜色却是这样的:
出了什么问题?如何解决?
答案1
Windows shell(以及与之相关的控制台2包装器)仅限于16 种颜色而 GVIM 可以使用完整的 24 位 RGB 调色板。因此,即使控制台支持配色方案,通常也存在限制。
你能做到的最好的是使 shell / Console2 的调色板适应所使用的 RGB 颜色(最多 16 种)。暮配色方案,然后使配色方案中的ctermfg=
和条目适应相应的索引。ctermbg=
脚步
在 中colors/twilight.vim
,您将找到以下定义:
let s:grey_blue = '#8a9597'
let s:light_grey_blue = '#a0a8b0'
let s:dark_grey_blue = '#34383c'
let s:mid_grey_blue = '#64686c'
let s:beige = '#ceb67f'
let s:light_orange = '#ebc471'
let s:yellow = '#e3d796'
let s:violet = '#a999ac'
let s:green = '#a2a96f'
let s:lightgreen = '#c2c98f'
let s:red = '#d08356'
let s:cyan = '#74dad9'
let s:darkgrey = '#1a1a1a'
let s:grey = '#303030'
let s:lightgrey = '#605958'
let s:white = '#fffedc'
您需要重新定义 Console2 颜色彩色图对那些(最好尝试匹配相似的现有颜色,否则其他程序输出看起来会很奇怪)。
然后,修改colors/twilight.vim
脚本,添加彩色终端内容,例如将其
exe 'hi String guifg='.s:green .' guibg='.s:darkgrey .' gui=none'
变成(假设你使用了颜色 #0s:darkgrey
和 #10 s:green
)
exe 'hi String ctermfg=10 ctermbg=0 guifg='.s:green .' guibg='.s:darkgrey .' gui=none'