vim 颜色方案在启动时不生效

cha*_*HXC 5 vim xterm

我有一个问题,当我启动 VIM 时,我在 .vimrc 上设置的颜色方案在第一次运行 VIM 时不会生效,但是每当我执行:colorscheme 'mycolorscheme' 时,都会应用颜色方案。

我是 linux 的初学者,所以请多多包涵。

我只是在想是否应该设置一个设置。这是我使用 xterm 设置的设置。

  1. .X资源

    *customization: -color
    XTerm*termName: xterm-256color
    
    Run Code Online (Sandbox Code Playgroud)
  2. .xsession

    if [ -f $HOME/.Xresources ]; then
         xrdb -merge $HOME/.Xresources
    fi
    
    Run Code Online (Sandbox Code Playgroud)

运行后xrdb -query 输出如下:

*customization:-color
XTerm*termName: xterm-256color
Xft.dpi:    96
Xft.antialias:  1
Xft.hinting:    1
Xft.hintstyle:  hintslight
Xft.rgba:   rgb
Xft.lcdfilter:  lcddefault
Run Code Online (Sandbox Code Playgroud)

顺便说一句,每当我想启动 VIM 时,只有颜色方案不会生效。但所有映射和其他设置都有效

这是我的 .vimrc

    "**********************************************"
"           VUNDLE SETTINGS                    "
"**********************************************"

set nocompatible " be iMproved 
filetype off    " required!

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
filetype plugin indent on " required!

"**********************************************"
"           PLUGINS                            "
"**********************************************"
"EasyMotion
Bundle 'Lokaltog/vim-easymotion'
"Sparkup
Bundle 'tristen/vim-sparkup'
"Surround
Bundle 'tpope/vim-surround'
"CsApprox
Bundle 'godlygeek/csapprox'

"**********************************************"
"           COLOR SCHEMES                      "
"**********************************************"

"   Distinguised
Bundle 'Lokaltog/vim-distinguished'
"   Github  
Bundle 'endel/vim-github-colorscheme'
"   VividChalk  
Bundle 'tpope/vim-vividchalk'
"   Pyte    
Bundle 'therubymug/vim-pyte'
"   Vibrantink
Bundle 'vim-scripts/vibrantink'

"**********************************************"
"           MAP LEADER                         "
"**********************************************"
let mapleader = ","

"**********************************************"
"           SYNTAX                             "
"**********************************************"
syntax enable

"**********************************************"
"           VIM SCRIPTS                        "
"**********************************************"
if has('gui_running') 
    colorscheme github
else 
    colorscheme pyte
endif

"**********************************************"
"           CUSTOM SETTINGS                    "
"                                              "
"**********************************************"
set hidden

" Show what mode you're currently at
set showmode

" Enable enhanced command line completion
set wildmenu

" Don't redraw while executing macros
set lazyredraw

" Indentation settings (SOFT TABS)"
set shiftwidth=4
set softtabstop=4
set smarttab
set expandtab "enable this to use spaces instead of tabs

" show line number
set nu

" hightlight as you type
set incsearch
" ignore case when searching
set ignorecase

" set statusline
set laststatus=2

"**********************************************"
"       NOTE don't map <c-s> and <c-q>         "
"**********************************************"

"**********************************************"
"           KEYMAPS                            "
"**********************************************"

"*******NORMAL MODE MAPPING********"
"map for editing .vimrc
nnoremap <leader>ev :e $MYVIMRC<cr>
"map for sourcing vimrc
nnoremap <leader>sv :so $MYVIMRC<cr>
"map for switching windows
"_ in this keymap is to jump for a line with a nonblank char
nnoremap <space> <c-w><c-w>_

"*******INSERT MODE Mapping********"
"map for escape while in insert mode
inoremap <leader>; <esc>
"map for ins-completion
inoremap <leader>x <c-x>

"*********COMMAND MODE Mappings*******
"exit out of command line mode
cnoremap <leader>; <c-c>
Run Code Online (Sandbox Code Playgroud)

编辑

无论我使用什么终端模拟器,它都不起作用。gnome-terminal 或 xterm。看起来 colorsheme 确实已加载。首次加载时,键入 :colorscheme 会报告我在 .vimrc 上设置的正确颜色方案。但是第一次不会生效。我必须在 VIM 上输入

:colo 'colorschemename'
Run Code Online (Sandbox Code Playgroud)

或再次使用它来激活配色方案

:so $MYVIMRC
Run Code Online (Sandbox Code Playgroud)

但是退出 VIM 后,colorscheme 再次没有生效,而是在启动 VIM 时加载。

提前致谢。

tux*_*xar 4

将 colorcheme 指令放入 ~/.vimrc 文件中

例如

colorscheme evening
Run Code Online (Sandbox Code Playgroud)

更新1:

通过您的 ~/.vimrc 和Vundle安装,我重现了您的问题。添加

set t_Co=256
colorscheme evening 
Run Code Online (Sandbox Code Playgroud)

在 ~/.vimrc 的末尾,看看这是否适合你。

您还可以查看http://vim.wikia.com/wiki/Using_GUI_color_settings_in_a_terminal


cha*_*HXC 1

我找到了解决方案。我想我必须回答我自己的问题。我真的很绝望,所以我继续通过 BundleClean 将插件一一删除Vundle中检查是否有任何插件行为异常。

毕竟这不是我的 .vimrc 的问题。这是与EasyMotionCSApprox插件的冲突。

我在Vundle上的CSApprox之前进行了EasyMotion配置,我按照此配置中的说明进行操作。

https://github.com/Lokaltog/vim-easymotion/issues/55

这是另一篇文章,可能会帮助其他人解决与我相同的问题。

https://github.com/Lokaltog/vim-easymotion/issues/39