我正在为我的终端 vim 使用 Matrix 颜色方案和 CSApprox。
我似乎无法将背景设置为透明。我尝试过编辑matrix.vim 文件,但它并没有使它变得更好。
这里是
matrix.vim
" vim:set ts=8 sts=2 sw=2 tw=0:
"
" matrix.vim - MATRIX like colorscheme.
"
" Maintainer: MURAOKA Taro <[email protected]>
" 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
中声明时则不然。我也尝试在colorscheme matrix
中的.vimrc
之后添加它,但这没有帮助。
首次加载时的样子。
输入命令后的样子
您不必更改颜色方案中的任何内容,只需将以下内容添加到您的 .vimrc 中即可:
hi Normal guibg=NONE ctermbg=NONE
更新:
正如利亚姆在评论中提到的:
这条线需要低于
colorscheme
中的.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
现在您确定在加载所有内容后,您正在运行命令。
上面的答案并不能解决所有问题,当我们进入 vim 时,它们将 bg 更改为透明(因此出现“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,然后退出(为了更快地查找,我放置了一些打印语句)
vi -V10debug_so.log +'!echo sourcing' +'source ~/.config/nvim/init.vim' +'!echo sourced' +q
在新日志中,我们看到,之后 VimEnter 不再被调用,并且 bg 恢复为主题默认值。
但是,我们也可以注意到,当获取文件时会发生一些事件,我们将重点关注以下内容
可以使用
SourcePost
事件修复上述不完整的解决方案。所以新的正确的自动命令是(最终答案)
" 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
NeoVim 的纯 LUA 版本设置完全透明背景:
vim.api.nvim_set_hl(0, "Normal", {guibg=NONE, ctermbg=NONE})
就我而言,我刚刚在
colorscheme
声明之后添加了这两行:
hi NonText ctermbg=none
hi Normal guibg=NONE ctermbg=NONE
我使用 macvim,即使我把它放在 .vimrc 中的
hi Normal guibg=NONE ctermbg=NONE
之后,colorscheme
对我也不起作用
但我发现
:set transparency=20 | :set blurradius=90
对我来说效果很好。在 macvim 的帮助下,他们确实声明这两个命令{Vi 中没有}且{仅在 MacVim GUI 中}。
我在 2023 年找到了这个帖子。我尝试了所有选项,发现一个在我的
.vimrc
上发表了评论
autocmd VimEnter * hi Normal ctermbg=none
我放置在
colorscheme
条目下方。