为什么 Vim 以红色突出显示我所有的 JSON 评论?
Why does Vim highlight all my JSON comments in red?
我在 JSON 文件中得到了一些由 自动生成的评论,不幸的是 vim 似乎无法识别它们只是评论。
它们都是红色的 - 我的哪个插件正在这样做?
我真的不想关闭我所有的语法高亮显示,我也不想每次 运行 进入红色高亮显示时手动清除错误。
" 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
如@Michail 所述,JSON 语法 不 支持注释,因此 Vim 将它们标记为错误。
在寻找与 (Neo)Vim 的 JSON 突出显示有关的其他一些奇怪的事情时,我发现您可以使用 let g:vim_json_warnings=0
禁用此类警告。这并不是一个真正的“解决方案”(正确的解决方案是向 JSON 语法添加注释,即使它是一个可选功能),但它确实删除了到处都是巨大的丑陋红色框。
如评论和接受的答案中所述,JSON 没有评论,但由于它是一个如此常见的扩展,所以至少能够禁用警告是很好的。
这为我修复了它:
autocmd FileType json syntax match Comment +\/\/.\+$+
不知道从哪里弄来的。
编辑:
请注意,要使其正常工作,您必须让 vim 通过 filetype on
处理文件类型检测。把它放在 autocmd ...
上方的某处
我发现有一个评论 json 的插件可以解决这个问题:jsonc。你应该去看看。
要关闭 JSON 注释错误突出显示,请在用户配置文件夹中添加以下文件。
after/syntax/json.vim
syntax clear jsonCommentError
syntax match jsonComment "//.*"
syntax match jsonComment "\(/\*\)\|\(\*/\)"
hi def link jsonComment Comment
要扩展 NERDCommenter 的规则,请将以下内容添加到 vimrc.
let NERDCustomDelimiters = {'json': { 'left': '//', 'right': '' }}
packadd nerdcommenter
我在 JSON 文件中得到了一些由 自动生成的评论,不幸的是 vim 似乎无法识别它们只是评论。
它们都是红色的 - 我的哪个插件正在这样做?
我真的不想关闭我所有的语法高亮显示,我也不想每次 运行 进入红色高亮显示时手动清除错误。
" 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
如@Michail 所述,JSON 语法 不 支持注释,因此 Vim 将它们标记为错误。
在寻找与 (Neo)Vim 的 JSON 突出显示有关的其他一些奇怪的事情时,我发现您可以使用 let g:vim_json_warnings=0
禁用此类警告。这并不是一个真正的“解决方案”(正确的解决方案是向 JSON 语法添加注释,即使它是一个可选功能),但它确实删除了到处都是巨大的丑陋红色框。
如评论和接受的答案中所述,JSON 没有评论,但由于它是一个如此常见的扩展,所以至少能够禁用警告是很好的。
这为我修复了它:
autocmd FileType json syntax match Comment +\/\/.\+$+
不知道从哪里弄来的。
编辑:
请注意,要使其正常工作,您必须让 vim 通过 filetype on
处理文件类型检测。把它放在 autocmd ...
我发现有一个评论 json 的插件可以解决这个问题:jsonc。你应该去看看。
要关闭 JSON 注释错误突出显示,请在用户配置文件夹中添加以下文件。
after/syntax/json.vim
syntax clear jsonCommentError
syntax match jsonComment "//.*"
syntax match jsonComment "\(/\*\)\|\(\*/\)"
hi def link jsonComment Comment
要扩展 NERDCommenter 的规则,请将以下内容添加到 vimrc.
let NERDCustomDelimiters = {'json': { 'left': '//', 'right': '' }}
packadd nerdcommenter