首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置vim背景透明

设置vim背景透明
EN

Stack Overflow用户
提问于 2016-06-08 20:54:24
回答 5查看 72K关注 0票数 77

我正在使用矩阵颜色方案和CSApprox作为我的终端vim。

我似乎不能把背景设置成透明的。我尝试过编辑matrix.vim文件,但是它并没有使它变得更好。

这是matrix.vim

代码语言:javascript
复制
" vim:set ts=8 sts=2 sw=2 tw=0:
"
" matrix.vim - MATRIX like colorscheme.
"
" Maintainer: MURAOKA Taro <koron@tka.att.ne.jp>
" Last Change:  10-Jun-2003.

set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif

let g:colors_name = 'matrix'

hi Comment guifg=#226622
hi Constant guifg=#55ff55
hi Special guifg=#44cc44
hi Identifier guifg=#55ff55
hi Statement guifg=#55ff55 gui=bold
hi PreProc guifg=#339933
hi Type guifg=#55ff55 gui=bold
hi Underlined guifg=#55ff55 gui=underline
hi Error guifg=#55ff55
hi Todo guifg=#113311 gui=none
hi Cursor guifg=#226622
hi lCursor guifg=#226622
hi CursorIM guifg=#226622
hi Directory guifg=#55ff55
hi DiffAdd guifg=#55ff55 gui=none
hi DiffChange guifg=#55ff55 gui=none
hi DiffDelete guifg=#113311 gui=none
hi DiffText guifg=#55ff55 gui=bold
hi ErrorMsg guifg=#55ff55
hi VertSplit guifg=#339933
hi Folded guifg=#44cc44
hi FoldColumn guifg=#44cc44
hi IncSearch guifg=#226622 gui=none
hi LineNr guifg=#44cc44 gui=none
hi ModeMsg guifg=#44cc44
hi MoreMsg guifg=#44cc44
hi NonText guifg=#44cc44 guibg=NONE ctermbg=none
hi Normal guifg=#44cc44 guibg=NONE ctermbg=none
hi Question guifg=#44cc44
hi Search guifg=#113311 gui=none
hi SpecialKey guifg=#44cc44
hi StatusLine guifg=#55ff55 gui=none
hi StatusLineNC guifg=#113311 gui=none
hi Title guifg=#55ff55 gui=bold
hi Visual guifg=#55ff55 gui=none
hi VisualNOS guifg=#44cc44
hi WarningMsg guifg=#55ff55
hi WildMenu guifg=#226622

还有我的.vimrc文件

代码语言:javascript
复制
set nocompatible
filetype off

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

Plugin 'gmarik/Vundle.vim'
Plugin 'fatih/vim-go'
Plugin 'vim-airline/vim-airline'
" Plugin 'vim-airline/vim-airline-themes'
Plugin 'airblade/vim-gitgutter'
" Plugin 'altercation/vim-colors-solarized'
Bundle 'morhetz/gruvbox'
Plugin 'tpope/vim-git'
Plugin 'Valloric/YouCompleteMe'
Plugin 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
" Plugin 'flazz/vim-colorschemes'
Plugin 'godlygeek/csapprox'

call vundle#end()

filetype plugin indent on
syntax on
syntax enable

#...
#...
#...
#...
#...

set t_Co=256
colorscheme matrix

如果我在命令提示符中输入hi Normal guifg=#44cc44 guibg=NONE ctermbg=none,它看起来就像预期的那样。但当它只在matrix.vim中声明时就不是了。我还尝试在colorscheme matrix之后添加.vimrc,但没有帮助。

第一次加载时的样子.

输入命令后的样子

EN

回答 5

Stack Overflow用户

发布于 2016-06-09 08:32:11

您不必更改配色方案中的任何内容,只需将以下内容添加到您的.vimrc中:

代码语言:javascript
复制
hi Normal guibg=NONE ctermbg=NONE

更新:

正如利亚姆在评论中提到的那样:

这一行需要在colorscheme (在.vimrc中)下面

票数 174
EN

Stack Overflow用户

发布于 2020-08-12 18:05:54

例如,如果您在.vimrc的第5行加载一个插件,那么如果您更改了第6行,并不意味着Vim完全加载插件,然后运行您的第6行!!

这就是为什么,您应该使用autocmd命令,因为在本例中,确保您的所有插件都被完全加载,然后命令将在该之后运行!

在这种情况下:

代码语言:javascript
复制
" transparent bg
autocmd vimenter * hi Normal guibg=NONE ctermbg=NONE
" For Vim<8, replace EndOfBuffer by NonText
autocmd vimenter * hi EndOfBuffer guibg=NONE ctermbg=NONE

现在您可以确定在加载了所有东西之后,您正在运行您的命令。

票数 21
EN

Stack Overflow用户

发布于 2021-05-17 12:07:31

上面的答案并不能解决所有的问题,当我们输入vim (因此是"VimEnte“事件)时,它们会将bg更改为透明,但是当您再次获取init.vim文件时,背景会恢复(这是因为当文件来源于VimEnter自动命令时没有执行)。

不直接发布正确的答案,我将解释如何到达它:

因此,首先,我们需要了解vim打开时会发生什么:

代码语言:javascript
复制
vi -V10debug.log +q

这将创建一个debug.log,在这里您可以看到执行了哪些自动命令以及它们的顺序。

autocmd vimenter * hi Normal guibg=NONE ctermbg=NONE“For Vim<8,将EndOfBuffer替换为NonText autocmd vimenter * hi EndOfBuffer guibg=NONE ctermbg=NONE`

如果我们使用这一点,我们可以在日志中看到VimEnter将bg更改为NONE (到目前为止它是好的)。

但是,下面的命令打开vim,然后来源于vimrc,然后退出(为了更快地找到,我已经插入了一些print语句)

代码语言:javascript
复制
vi -V10debug_so.log +'!echo sourcing'  +'source ~/.config/nvim/init.vim' +'!echo sourced' +q

在新的日志中,我们看到,之后不再调用VimEnter,bg将恢复为主题默认值。

但是,我们也可以注意到,当文件来源时,会发生一些事件,我们将关注以下内容

  1. SourcePre -采购前
  2. SourcePost -采购后

在这里,可以使用SourcePost事件修复上述不完整的解决方案。因此,新的、正确的自动命令是(Final答案)

代码语言:javascript
复制
    " Workaround for creating transparent bg
    autocmd SourcePost * highlight Normal     ctermbg=NONE guibg=NONE
            \ |    highlight LineNr     ctermbg=NONE guibg=NONE
            \ |    highlight SignColumn ctermbg=NONE guibg=NONE

始终在组中使用此方法,请将此作为参考- https://github.com/kalkayan/dotfiles/blob/main/.config/nvim/init.vim

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37712730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档