设置vim背景透明

sqyvllje  于 2022-11-24  发布在  其他
关注(0)|答案(6)|浏览(703)

我正在使用矩阵配色方案沿着CSApprox为我的终端vim。
我似乎无法将背景设置为透明。我尝试过编辑matrix.vim文件,但它并没有使它更好。
这里是matrix.vim

" 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文件

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中声明时就不一样了。我还尝试在.vimrc中的colorscheme matrix之后添加它,但没有帮助。

第一次载入时的样子

输入命令后的外观

9o685dep

9o685dep1#

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

hi Normal guibg=NONE ctermbg=NONE

更新日期:

正如Liam在评论中提到的:
这条线需要在.vimrc中的colorscheme下方

wsewodh2

wsewodh22#

例如,如果你在.vimrc的第5行加载一个插件,那么如果你改变了第6行,这并不意味着Vim完全加载了插件,然后运行你的第6行!!
这就是为什么,你应该使用autocmd命令,因为在这种情况下,它确保你所有的插件完全加载,然后你的命令将运行后,
在这种情况下:

" 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

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

myss37ts

myss37ts3#

使用这个gist。我编译了一些设置来使vim透明。

mu0hgdu0

mu0hgdu04#

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

我不会直接张贴正确答案,而是会说明如何找到它:

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

vi -V10debug.log +q

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

autocmd vimenter * hi Normal guibg=NONE ctermbg=NONE
" For Vim<8, replace EndOfBuffer by NonText
autocmd vimenter * hi EndOfBuffer guibg=NONE ctermbg=NONE```

如果我们使用这个,我们会在日志中看到VimEnter将bg更改为NONE(到目前为止是好的)。
但是,下面的命令打开了vim,然后得到vimrc,然后退出(为了更快地查找,我放置了一些print语句)

vi -V10debug_so.log +'!echo sourcing'  +'source ~/.config/nvim/init.vim' +'!echo sourced' +q

在新的日志中,我们看到,在此之后,VimEnter不再被调用,bg恢复为主题默认值。
但是,我们也可以注意到,当一个文件的来源有一些事件发生,我们将重点关注以下

  1. SourcePre -来源补充之前
    1.来源后-来源补充后
    可以使用SourcePost事件修复上述不完整的解决方案。因此,新的正确自动命令为(Final Answer
" 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

8ulbf1ek

8ulbf1ek5#

我使用的是macvim,即使我把hi Normal guibg=NONE ctermbg=NONE放在.vimrc中的colorscheme之后,它也不起作用
但是我发现:set transparency=20 | :set blurradius=90对我来说工作得相当不错。从macvim的帮助下,他们确实声明这两个命令{不在Vi中}和{只在MacVim GUI中}。

tquggr8v

tquggr8v6#

在我的例子中,我只是在colorscheme声明之后添加了这两行代码:

hi NonText ctermbg=none
hi Normal guibg=NONE ctermbg=NONE

相关问题