语法高亮适用于gvim(vim的GUI版本),但不适用于vim(基于终端的vim)

时间:2018-09-18 17:41:33

标签: typescript vim vi vim-plugin vim-syntax-highlighting

我是vim的新手,我想在vim中进行编码。我已经安装了必要的插件,以便在TypeScript中突出显示语法JSX,并且一切都适用于Vim的GUI版本,但不适用于基于终端的Vim。请帮助我找出问题所在。以下是我用于语法高亮显示的插件。

  1. 对于TypeScript:https://github.com/leafgarland/typescript-vim
  2. 对于TypeScript中的JSX:https://github.com/peitalin/vim-jsx-typescript

我正在使用Vundle安装插件。我尝试按照上面提到的第二个插件的“自述文件”部分中的颜色进行一些自定义。据此,当我使用hi命令时,它对基于终端的Vim没有任何影响,但在基于GUI的Vim上运行良好。另外,如果可能的话,请将我指向任何文章/博客,以供初学者进一步了解vim和vimscript。

编辑:

我正在尝试在TypeScript中为React开发设置JSX的语法突出显示,并且我已经安装了上述插件来实现这一点。以下是我的.vimrc文件的内容。

set nocompatible                " choose no compatibility with legacy vi syntax enable
set encoding=utf-8
set showcmd                     " display incomplete commands
set t_Co=256
filetype plugin indent on       " load file type plugins + indentation

"" monkai theme
syntax enable
colorscheme monokai

set nu
set guifont=monacob\ bold\ 9

highlight ColorColumn ctermbg=gray
set colorcolumn=80

"" Whitespace
set nowrap                      " don't wrap lines
set tabstop=2 shiftwidth=2      " a tab is two spaces (or set this to 4)
set expandtab                   " use spaces, not tabs (optinal)
set backspace=indent,eol,start  " backspace through everything in insert mode

"" Searching
set hlsearch                    " highlight matches
set incsearch                   " incremental searching
set ignorecase                  " searches are case insensitive...
set smartcase                   " ... unless they contain at least one capital letter

" set the runtime path to include Vundle and initialize
set rtp +=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
Plugin 'tpope/vim-fugitive.git'
Plugin 'tpope/vim-rails'
Plugin 'leafgarland/typescript-vim'
Plugin 'peitalin/vim-jsx-typescript'
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" autocmd FileType typescript.tsx setlocal commentstring={/*\ %s\ */}
autocmd BufNewFile,BufRead *.tsx,*.jsx set filetype=typescript.tsx
autocmd BufNewFile,BufRead *.ts,*.js set filetype=typescript.jsx

" dark red
hi tsxTagName guifg=#E06C75

" orange
hi tsxCloseString guifg=#F99575
hi tsxCloseTag guifg=#F99575
hi tsxAttributeBraces guifg=#F99575
hi tsxEqual guifg=#F99575

" yellow
hi tsxAttrib guifg=#F8BD7F cterm=italic

以下是Vim的GUI版本中JSX语法突出显示的屏幕截图 enter image description here

下面是终端版本Vim中JSX语法突出显示的屏幕截图 enter image description here

正如我们在.vimrc和屏幕截图中所看到的那样,在文件末尾声明的JSX标签颜色等对于Gvim可以正常使用,但不适用于基于终端的vim。请帮助我了解我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

" dark red
hi tsxTagName guifg=#E06C75

使用guifg属性,您只能为GVIM定义颜色。

自Vim 8起,提供了:help 'termguicolors'选项;您可以尝试:set termguicolors;一些终端确实支持。

否则,您必须通过:set t_Co? / {为可用的颜色终端单独定义颜色(根据有限的颜色,ctermfg会告诉您)。 {1}}个属性。例如:

ctermbg

通过插件的替代方法

诸如CSApprox之类的插件可以采用GUI颜色定义,并将其转换为紧密匹配的256色hi tsxTagName guifg=#E06C75 ctermfg=DarkRed 调色板,以用于彩色终端。这有助于进行颜色选择,否则这些颜色选择只能从平淡的默认16色终端调色板中选择,或者仅提供GUI颜色定义。

csexact采用了另一种方法,该方法修改了(受支持的)终端的调色板以完全匹配Vim的GUI颜色。