1

尝试过的解决方案:添加和添加export TERM=xterm-256color到其他问题的解决方案中指出的。.bashrc.zshrcset t_Co=256.vimrc

是的,我使用的配色方案同时支持 gui 和它所在的终端

我主要使用macos,hyper.app但类似的情况同时发生,Terminal.app所以我想这不是模拟器的问题。

其他堆栈溢出问题中相当奇怪的事情:将此添加到我的.vimrc

if &term =~ '256color'
  " disable Background Color Erase (BCE) so that color schemes
  " render properly when inside 256-color tmux and GNU screen.
  set t_ut=
endif

将我的 vim 背景更改为深灰色(我不知道它来自哪里),但删除它会将其更改回我的终端背景颜色。

我会接受任何解决方案(因为我厌倦了这个,让它工作),这样我就可以从mac vim guiusing中获得十六进制颜色,Color Picker.app并且每次我决定更改主题时都可以将其强制设置为 vim 背景。

我所有的配置文件:

我也用过tmux,但有无颜色都一样tmux

编辑:

的输出:scriptnames

  1: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/vimrc
  2: ~/.vimrc
  3: ~/.vim/autoload/plug.vim
  4: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/filetype.vim
  5: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/ftplugin.vim
  6: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/indent.vim
  7: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/syntax/syntax.vim
  8: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/syntax/synload.vim
  9: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/syntax/syncolor.vim
 10: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/ftoff.vim
 11: ~/.vim/bundle/Vundle.vim/autoload/vundle.vim
 12: ~/.vim/bundle/Vundle.vim/autoload/vundle/config.vim
 13: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/syntax/nosyntax.vim
 14: ~/.vim/plugged/nemo/colors/nemo-dark.vim
 15: ~/.vim/bundle/vim-tmux-navigator/plugin/tmux_navigator.vim
 16: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/getscriptPlugin.vim
 17: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/gzip.vim
 18: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/logiPat.vim
 19: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/manpager.vim
 20: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/matchparen.vim
 21: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/netrwPlugin.vim
 22: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/rrhelper.vim
 23: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/spellfile.vim
 24: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/tarPlugin.vim
 25: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/tohtml.vim
 26: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/vimballPlugin.vim
 27: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/plugin/zipPlugin.vim
 28: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/ftplugin/python.vim
 29: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/indent/python.vim
 30: /usr/local/Cellar/macvim/8.0-146_1/MacVim.app/Contents/Resources/vim/runtime/syntax/python.vim

还尝试将其添加到.vimrc

set background=dark
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

编辑(2):

这是相同主题的屏幕截图以及它是如何呈现的

  • terminal.app在此处输入图像描述

  • hyper.app

在此处输入图像描述

  • 和 Mac vim gui(正确): 在此处输入图像描述
4

2 回答 2

3
  1. 给定一个适当的$TERM,Vim 将始终正常工作,所以像这样的黑客:

    set t_Co=256
    

    一般是没用的。

    如果您打算使用 256color-ready 配色方案,$TERM应以256color

    xterm-256color   prefered for general usage
    screen-256color  if you use Vim in screen or tmux
    tmux-256color    if you use Vim in tmux and your terminal emulator supports it
    
  2. 如果可能,$TERM不应在 shell 级别设置,而应在终端仿真器级别设置。在 Hyper.app 中,这是通过以下env键完成的~/.hyper.js

    env: {TERM: 'xterm-256color'},
    

    相同的逻辑适用于 tmux 和 screen,它们的作用类似于终端仿真器。

  3. 该片段是一个无用的黑客:

    if &term =~ '256color'
      " disable Background Color Erase (BCE) so that color schemes
      " render properly when inside 256-color tmux and GNU screen.
      set t_ut=
    endif
    
  4. 以下截图显示了 Hyper.app 在不同场景中完美运行的 256color-ready Vim 颜色方案,没有任何 hack

    下图:Hyper.app 中的 Vim。

    维姆

    下图:在 Hyper.app 中的 tmux 中的 Vim。

    tmux 中的 Vim

    我没有费心改变 Hyper.app 的主题,因为我不打算在这个答案之后使用它,但希望你能明白。

  5. 从那里,您可以:

    • 查找您的颜色方案的背景颜色并将其应用于终端模拟器的主题,~/.hyper.js以使丑陋的填充更可口,

    • 完全删除 Vim 的背景,以便使用终端仿真器,例如:

      function! MyHighlights() abort
          highlight Normal      ctermbg=NONE
          highlight NonText     ctermbg=NONE
          highlight EndOfBuffer ctermbg=NONE
      endfunction
      
      augroup MyColors
          autocmd!
          autocmd ColorScheme * call MyHighlights()
      augroup END
      colorscheme foobar
      
于 2018-07-18T07:23:24.220 回答
0

尝试使用https://github.com/chriskempson/base16-vim

我还在这里发布了两个在 Hyper 中不起作用的背景颜色的解决方法

这是我发布的第二个解决方法可能对您有用:

  • 在您的 .vimrc 中,将您的 vim 背景设置为透明:
"Overrides the color scheme background and makes it transparent      
 autocmd ColorScheme * highlight Normal ctermbg=None                                          
 autocmd ColorScheme * highlight NonText ctermbg=None
  • 将终端的背景更改为所需的背景颜色
于 2020-12-04T22:01:51.867 回答