Matrix 将vim背景设置为透明

Matrix 将vim背景设置为透明,matrix,vim,terminal,vim-plugin,color-scheme,Matrix,Vim,Terminal,Vim Plugin,Color Scheme,我正在为我的终端vim使用矩阵配色方案和CSAPROX 我似乎无法将背景设置为透明。我尝试过编辑matrix.vim文件,但没有任何效果 这是矩阵。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 backgro

我正在为我的终端vim使用矩阵配色方案和CSAPROX

我似乎无法将背景设置为透明。我尝试过编辑matrix.vim文件,但没有任何效果

这是
矩阵。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
如果在命令提示符中输入
hi-Normal-guifg=#44cc44-guibg=NONE-ctermbg=NONE
,它看起来与预期的一样。但当它仅在
matrix.vim
中声明时,则不会。我还尝试在
.vimrc
中的
colorscheme matrix
之后添加它,但没有帮助

第一次加载时的外观。

输入命令后的外观


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

hi Normal guibg=NONE ctermbg=NONE
更新:

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


该行需要位于
.vimrc


例如,如果您在.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
透明背景 autocmd VIMCENTER*高正常GUI=NONE ctermbg=NONE “对于Vim使用此选项。
我编译了一些设置以使vim透明。

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

我将解释如何找到正确答案,而不是直接发布正确答案:

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

vi -V10debug.log +q
这将创建一个debug.log,您可以在其中查看执行的自动命令及其顺序

在新的日志中,我们看到,在so之后,VimCenter不再被调用,bg恢复为默认主题

但是,我们也可以注意到,当一个文件被获取时,会发生一些事件,我们将重点关注以下几点

  • SourcePre-采购前
  • SourcePost-外包后
  • 在这里,可以使用
    SourcePost
    事件修复上述不完整的解决方案。因此,新的正确的自动命令是(最终答案


    始终在组中使用此命令,请参见此作为参考-

    当我在提示符中输入此命令时,它工作正常,但当我将其添加到我的
    .vimrc
    中时,它不工作。有可能,例如,如果.vimrc文件中有一个highlight命令将覆盖配色方案文件中的highlight命令。这将ppen如果您在.vimrc中的覆盖高亮显示命令之前在.vimrc中设置了colorscheme。如果您想高亮显示与colorscheme相同的vim,请在.vimrc文件的末尾编写set colorscheme命令。我添加了两行,它就起作用了。``hi NonText-ctermbg=none hi-Normal-guibg=none-ctermbg=none``这个line需要在.vimrc中的
    colorscheme
    下面。你可以在color.vim文件的末尾添加那一行。它工作得很好,但在文件结尾后我仍然有一个不透明的背景。当文件的行数小于屏幕高度时,它是可见的。有任何建议吗?@Cellcore如果背景与你的终端相关,只需配置你的终端支持透明,如果您使用图形gvim,您可以使用picom或compton之类的工具使其透明。@Cellcore尝试以下操作(如果vim<8,则用非文本替换EndOfBuffer)autocmd VIMCENTER*hi Normal guibg=NONE ctermbg=NONE autocmd VIMCENTER*hi ENDOFBUFER guibg=NONE ctermbg=NONE如果我们为
    init.vim
    文件(我们经常这样做)提供资源,则此选项不起作用:使用SourcePost而不是VIMCENTER。有关更多信息,请参阅此答案。
    vi -V10debug.log +q
    
    autocmd vimenter * hi Normal guibg=NONE ctermbg=NONE
    " For Vim<8, replace EndOfBuffer by NonText
    autocmd vimenter * hi EndOfBuffer guibg=NONE ctermbg=NONE```
    
    vi -V10debug_so.log +'!echo sourcing'  +'source ~/.config/nvim/init.vim' +'!echo sourced' +q
    
        " 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