Vim为什么用红色突出显示我所有的JSON注释?

时间:2019-04-13 21:16:31

标签: vim vim-syntax-highlighting neovim

我在JSON文件中有一些注释是由自动生成的,不幸的是,似乎vim无法识别它们只是注释。

enter image description here

它们都是红色的-我的哪个插件正在执行此操作?

我真的不想关闭所有语法高亮显示,也不想每次遇到红色高亮显示时手动清除错误。

" Enable syntax highlighting
syntax enable

" PLUGINS
call plug#begin('~/.vim/plugged')

"   deoplete - code completion
if has('nvim')
"      Add in a syntax file for deoplete typescripe, then add deoplete
    Plug 'HerringtonDarkholme/yats.vim'
    Plug 'mhartington/nvim-typescript', {'do': './install.sh'}
    Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
else
    Plug 'Shougo/deoplete.nvim'
    Plug 'roxma/nvim-yarp'
    Plug 'roxma/vim-hug-neovim-rpc'
    Plug 'ternjs/tern_for_vim', { 'do': 'npm install' }
endif

"   fzf - fuzzy find
Plug 'junegunn/fzf', { 'dir': '~/.vim/installed/fzf' }

"   lightline - a nice looking bottom bar
Plug 'itchyny/lightline.vim'
"       also get rid of the useless -- INSERT -- since we have a nice bar
set noshowmode

"   nerdtree - a little tree file browser 
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
"       map it to control-O
map <C-o> :NERDTreeToggle<CR>

"   gitgutter - adds some git context to the left side bar
Plug 'airblade/vim-gitgutter'
set updatetime=100

"   ale - asynchronous linting engine, highlights stuff
Plug 'w0rp/ale'

"   deoplete-ternjs - adds javascript to deoplete
Plug 'carlitux/deoplete-ternjs'
"   tern_for_vim - adds in the tern 'engine' or whatever to vim
Plug 'ternjs/tern_for_vim', { 'do': 'npm install && npm install -g tern' }

"   vimproc - async execution for things
Plug 'Shougo/vimproc.vim', { 'do': 'make' }
"   tsuquyomi - unpronouncable client for TSServer for completion and more
Plug 'Quramy/tsuquyomi', { 'do': 'npm install -g typescript' }

call plug#end()

" CONFIGURE - some of our plugins need configurations so add that in

let g:deoplete#enable_at_startup = 1
let g:deoplete#enable_ignore_case = 1
let g:deoplete#enable_smart_case = 1
let g:deoplete#enable_camel_case = 1
let g:deoplete#enable_refresh_always = 1
let g:deoplete#max_abbr_width = 0
let g:deoplete#max_menu_width = 0
let g:deoplete#omni#input_patterns = get(g:,'deoplete#omni#input_patterns',{})

let g:tern_request_timeout = 1
let g:tern_request_timeout = 6000
let g:tern#command = ["tern"]
let g:tern#arguments = ["--persistent"]
let g:deoplete#sources#tss#javascript_support = 1
let g:tsuquyomi_javascript_support = 1
let g:tsuquyomi_auto_open = 1
let g:tsuquyomi_disable_quickfix = 1

4 个答案:

答案 0 :(得分:6)

如@Michail所述,JSON语法不支持注释,因此Vim将其标记为错误。

答案 1 :(得分:1)

这为我修好了:

autocmd FileType json syntax match Comment +\/\/.\+$+

不知道从哪里得到的。

编辑:

请注意,要使其正常工作,您必须让 vim 通过 filetype on 处理文件类型检测。将其放在 autocmd ...

上方的某个位置

答案 2 :(得分:1)

我发现有一个注释 json 插件可以解决这个问题:jsonc。你应该去看看。

答案 3 :(得分:0)

在寻找其他一些与 (Neo)Vim 的 JSON 突出显示有关的奇怪事情时,我发现您可以使用 let g:vim_json_warnings=0 禁用此类警告。这并不是真正的“解决方案”(正确的解决方案是向 JSON 语法添加注释,即使它是一个可选功能),但它确实消除了无处不在的巨大丑陋红色框。

正如评论和接受的答案中所提到的,JSON 没有评论,但由于它是如此常见的扩展,因此至少能够禁用警告是很好的。

相关问题