处理bufread自动命令时检测到的UNIX VIM错误



我是本指南遵循本指南的新的VIM用户,可以自动制作VIM缩进python代码,并标记unnecssary whitespace:https://realpython.com/blog/blog/python/vim-andon/vim-and-pym-and-python--python---------------------------er-python-in------------------------A-Match-Made-In-In-In-In-#vim-Extensions

当我在.py文件上启动vim时,我已经收到此错误: Error detected while processing BufRead Auto commands for "*.py": E28: No such highlight group name: BadWhitespace

此错误我评论以下几行:

" Flag unnecessary whitespace                                           
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /s+$/   <- this line   
" UTF8 Support                                                          
set encoding=utf-8                                                      
" Proper PEP8 Identation                                                
au BufNewFile,BufRead *.py                                              
     set tabstop=4                                                     
"     set softtabstop=4      <-- this line                                          
     set shiftwidth=4                                                  
     set textwidth=79                                                  
     set expandtab                                                     
     set autoindent                                                    
     set fileformat=unix         

如何解决此错误?这是我的完整.vimrc文件:

set nocompatible              " required
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=/home/frank/.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'
" add all your plugins here (note older versions of Vundle
" used Bundle instead of Plugin)
Plugin 'tmhedberg/SimpylFold'
Plugin 'vim-scripts/indentpython.vim'
Bundle 'Valloric/YouCompleteMe'
Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8'
Plugin 'jnurmine/Zenburn'
Plugin 'altercation/vim-colors-solarized'
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'kien/ctrlp.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
" ...
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" Split navigations
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
" Enable folding
set foldmethod=indent
set foldlevel=99
" Enable folding with the spacebar
nnoremap <space> za
" See docstrings for folded code
let g:SimpylFold_docstring_preview=1
" Flag unnecessary whitespace
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /s+$/      <-this line
" UTF8 Support
set encoding=utf-8
" Proper PEP8 Identation        <-this line
au BufNewFile,BufRead *.py
     set tabstop=4
"     set softtabstop=4 
     set shiftwidth=4
     set textwidth=79
     set expandtab
     set autoindent
     set fileformat=unix
" For Full stack development 'au' command
"au BufNewFile,BufRead *.js, *.html, *.css
"     set tabstop=2
"     set softtabstop=2
"     set shiftwidth=2
" YouCompleteMe plugin customization
let g:ycm_autoclose_preview_window_after_completion=1
map <leader>g  :YcmCompleter GoToDefinitionElseDeclaration<CR>
"python with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
  project_base_dir = os.environ['VIRTUAL_ENV']
  activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
  execfile(activate_this, dict(__file__=activate_this))
EOF
" Makes python code pretty
let python_highlight_all=1
syntax on
" Adds a bit of logic to define which color scheme to use based upon VIM mode
if has('gui_running')
  set background=dark
  colorscheme solarized
else
  colorscheme zenburn
endif
" Press F5 to toggle between dark and light theme
call togglebg#map("<F5>")
" Hybrid line numbers
:set number relativenumber
:augroup numbertoggle
:  autocmd!
:  autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
:  autocmd BufLeave,FocusLost,InsertEnter   * set norelativenumber
:augroup END
set pastetoggle=<F10>

有一个更简单的解决方案。您会发现我遇到了相同的问题,在这个小技巧之后,没有错误消息,一切正常。

技巧是,bufnewfile,bufread应该被一个空间分开。因此该线应该看起来像

au BufNewFile, BufRead *.py

而不是au BufNewFile,BufRead *.py 最好的问候

命令:

match BadWhitespace /s+$/

只要定义了BadWhitespace突出显示组,就会突出显示落后的白色空间。要检查是否定义了:highlight BadWhitespace。如果未定义,则可以使用默认突出显示组,例如:

match Cursor /s+$/

或定义BadWhitespace突出显示组。可能的颜色组合是:

:highlight BadWhitespace ctermfg=16 ctermbg=253 guifg=#000000 guibg=#F8F8F0

在使用BadWhitespace

问题是多个 set s。该行的第一个set

set tabstop=4

是命令,以下所有set s被视为参数。

应该看起来像这样:

au BufNewFile,BufRead *.py
     set tabstop=4
     softtabstop=4
     shiftwidth=4
     textwidth=79
     expandtab
     autoindent
     fileformat=unix

另外:

" Use the below highlight group when displaying bad whitespace is desired.
highlight BadWhitespace ctermbg=red guibg=red
" Display tabs at the beginning of a line in Python mode as bad.
au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^t+/
" Make trailing whitespace be flagged as bad.
au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /s+$/

最新更新