我对Vim相对较新,并且到目前为止一直使用它没有问题。我要么从Dock中启动MacVim,要么从命令行使用mvim
。到目前为止,这种方法很有效,但刚才我遇到了一个问题。没有明显的原因,从命令行启动MacVim开始创建一个MacVim窗口,其中所有颜色都搞砸了。当我从码头发射它时,一切都很好。
两个编辑器之间的colorscheme是相同的(曝光),所以我真的很困惑这个问题是什么。我的MacVim是使用Homebrew安装的,看起来Dock和命令行的可执行文件是相同的。我甚至尝试直接发布/Applications/MacVim.app/Contents/MacOS/MacVim
,它也打开了白色。我正在使用Janus,我尝试使用rake脚本来修改我的.vim并重新创建它,但没有改变。
非常感谢任何帮助,提前谢谢。
修改
我的.vimrc
/ .gvimrc
文件相当大,但它们是Janus附带的基本值。我的.vimrc.local
/ .gvimrc.local
是相同的,看起来像这样,
syntax enable
set background=dark
colorscheme solarized
map f gg=G
我也发现这对其他主题似乎没有问题,比如ir_black(Janus默认为)。
修改2
这似乎是一个known issue,其中至少有一些人会遇到它。发现一个解决方案时会发布解决方案。
答案 0 :(得分:2)
问题不在于macvim
,而在于Terminal.app
。苹果的默认终端在支持颜色方面非常古老,仅支持16种颜色。如果使用终端(cterm
),则vim的大多数颜色方案定义为256种颜色,如果使用gui
则定义为1600万种。这就是搞砸了你的颜色。
我建议您使用iTerm2
作为终端。它支持256种颜色,并具有许多其他功能(拆分窗口是我最喜欢的!),并且通常比Terminal.app
更稳定。
答案 1 :(得分:2)
这是由mvim
将终端环境导出到MacVim引起的。
我有Solarized检查它是否在Terminal.app中运行,如果是这样,在vim中使用透明(NONE)背景以避免一些奇怪的颜色问题。不幸的是,我没有意识到mvim也将它的终端环境输出到MacVim。我以前要求vim检查$ TERM_PROGRAM值,如果它是terminal.app的字符串,那么我假设我在其中。我已将此更改为现在检查字符串并检查。
MacVim应该抛弃终端环境吗?我不知道。我对此表示怀疑。因此,如果在vim脚本中使用envrionment变量,那么我建议最佳实践是检查是否具有gui_running,如果与检查相关的话。
我已经在github上的solarized项目中添加了一个针对commit d5fcacea的修复程序,并在这里进行了测试并远程与另一个用户进行了测试。
答案 2 :(得分:0)
你可以发布你的.vimrc吗?
这就是我所拥有的,我没有你所描述的问题:
if has("gui_running")
augroup RCVisual
autocmd!
autocmd GUIEnter * colorscheme mycolo
augroup END
else
colo desert
endif
注意人们总是对我在#vim做不同的事情大吼大叫,但他们总是为我工作。换句话说,这可能不是最佳做法,但它确实有效。