当我在macvim中打开文件时,它就像这个http://imgur.com/a/3cLqB#0。
我已将,V
设置为:source ~/.vimrc<CR>
。
我打开此文件后,按,V
,语法突出显示对此http://imgur.com/a/3cLqB#1的更改。
区别在于(
,)
,;
,,
来自蓝色,白色,->
,.
,{{1}变成蓝色,深蓝色。
为什么会这样?这是我的vimrc文件https://gist.github.com/pvinis/4979592
-
更新:我发现?
是改变颜色的插件。所以第一张照片是正确的照片。
我也发现,只要我Valloric/vim-operator-highlight
,颜色就会重置。有没有办法检查语法是否已经开启?
答案 0 :(得分:3)
我有一些与此相似的事情。我能够通过确保这些顺序正确来解决它:
syntax on
let g:solarized_termtrans=1
let g:solarized_termcolors=256
set background=dark
colorscheme solarized
我也用它来重装
augroup reload_vimrc
autocmd!
autocmd BufWritePost $MYVIMRC source $MYVIMRC
augroup END
有了这两个,我可以直接更新我的vimrc而无需重新加载。我正在使用iTerm2和Terminal vim。希望这可以帮助其他人,因为我花了很多时间试图让这个实时重装工作。还要确保您拥有曝光主题的最新版本。我知道这似乎很平常,但它可能会有所作为。
答案 1 :(得分:2)
重新加载.vimrc
时,某些突出显示的组会混乱。
这取决于你拥有什么插件以及你正在使用什么颜色方案。
我注意到有些highlight links
被破坏了,有些highlight groups
被清除了。
在我的特定设置中,我注意到已损坏hi links
或已清除groups
:
SignColumn
GitGutter
(使用SignColumn
)powerline-status
(使用状态行) 重新加载后注意受影响的区域:
(重新加载意味着保存修改后的文件。在此示例中使用:wa
)
不幸的是,我尝试过的列出的答案或任何选项组合在重新加载后都不会保留或恢复hi
组。
重新加载后手动运行colorscheme <your-coloscheme>
会修复所有内容,但在使用Vimscript
进行修复时则不会
希望有人能为这个烦人的小问题分享一个合适的解决方案。
对我的vim配置文件进行任何更改后,执行reload.vim
:
的的.vimrc:强>
" .....
augroup reload_vimrc " {
autocmd!
autocmd BufWritePost ~/.vim/*.vim,~/.vim/vimrc source ~/.vim/reload.vim
augroup END " }
reload.vim
:恢复损坏的链接和清除的组我们要做的是在采购hi
后恢复vimrc
群组
要查找受影响区域的正确值,例如对于SignColumn
,请输入:
:hi SignColumn
,之前发生任何重新加载
结果是(xxx
是预览):
您必须为每个受影响的hi
执行此操作
在以下代码段中,我最初修复了SignColumn
以匹配我的solarized
colorscheme
然后我修复了一些GitGutter
颜色问题:
例如,GitGutterAdd
与已保留的GitGutterAddDefault
相关联,但从GitGutterAddDefault
到DiffAdd
已损坏,因此我重新安装了该source ~/.vim/vimrc
hi SignColumn ctermfg=12 ctermbg=0 guifg=Cyan guibg=Grey
" GitGutterAdd -> GitGutterAddDefault (preserved)
hi link GitGutterAddDefault DiffAdd
" GitGutterChange -> GitGutterChangeDefault (preserved)
hi GitGutterChangeDefault ctermfg=3 ctermbg=0 guifg=#bbbb00
" GitGutterDelete -> GitGutterDeleteDefault (preserved)
hi GitGutterDeleteDefault ctermfg=1 ctermbg=0 guifg=#ff2222
" GitGutterChangeDelete -> GitGutterChangeDefault (preserved)
" (which we already fixed above)
" Powerline highlight groups
" (see this attached Gist for solution)
。依此类推。
<强> reload.vim:强>
powerline
powerline-status
颜色:这个有点棘手,但原理是一样的。 Pl_
的所有突出显示组都以visual
开头。但其中一些可能还不存在。例如,如果您尚未进入insert
模式,则尚未填充可视模式的相应组。因此,请输入visual
,normal
和hl
模式来填充组,然后复制它们。您可以在reload.vim
命令输出的底部找到它们。然后,将它们粘贴到hl
中,并将其调整为合法reload.vim
命令。
这可能听起来像很多工作,但事实并非如此。
这是一个gist,其中包含完整的gifs
,还有一些int/double
可以指导您完成。
答案 2 :(得分:1)
我猜这些突出显示是由某个插件定义/更改的。重新执行:colorscheme
会重置这些定义。插件必须使用ColorScheme
挂钩:autocmd
事件,但大部分都没有。
要解决此问题,请尝试将:colorscheme
包裹在警卫中:
if ! exists('g:colors_name') || g:colors_name !=# 'Tomorrow-Night-Eighties'
colorscheme Tomorrow-Night-Eighties
endif
答案 3 :(得分:1)
这对我有用
"auto reload vimrc once changed
if has("autocmd")
autocmd! BufWritePost .vimrc source $MYVIMRC
" This fixes the color changes and things not working :D
autocmd! BufWritePost .vimrc filetype plugin indent on
endif
答案 4 :(得分:1)
我完全不知道为什么,(可能是因为:source ~/.vimrc
手动操作的原因相同)但是我替换了
autocmd BufWritePost *vimrc,*exrc :source %
与
autocmd BufWritePost *vimrc,*exrc :call feedkeys(":source %\<cr>")
修复了问题。
答案 5 :(得分:0)
很可能与您的特定情况无关,但我遇到了类似的问题,所以我认为我会分享,因为它是Google上第一个StackOverflow结果。
重新加载的问题分为两个阶段:使用黑暗的Solarized主题,重新加载.vimrc
首先会稍微改变颜色,然后重新加载第二次,它会切换到浅色的Solarized主题。
.vimrc
中关于颜色的线条是:
set background="dark"
let g:solarize_termcolors=256
colorscheme solarized
问题?第一行不应该有引号:
set background=dark
我现在可以在不更改颜色的情况下重新加载.vimrc
。虽然我不知道为什么它会工作一次并以不同的方式工作。我意识到除了其他人所建议的那样,除了这些内容之外的其他所有内容。
答案 6 :(得分:0)
autocmd BufWritePost *vimrc,*exrc :call feedkeys(":source %\<cr>")
立即为我修复。订购一定是一些奇怪的问题。我也有一个按键来获取文件资源,即使autocmd出现故障,此总是仍然有效。