Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error detected while processing BufRead Auto commands for "*.py"

Tags:

python

vim

I have a problem with my vim config...

This error occurs when opening python (.py) files:

Error detected while processing BufRead Auto commands for "*.py": E20: Mark not set 

When opening for example html (.html) or ruby (.rb) files, the error does not occur.

Here is my vim config. The plugins are all installed.

""" VUNDLE """ set nocompatible filetype off  set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin()  Plugin 'VundleVim/Vundle.vim'  " plugins Plugin 'valloric/youcompleteme' Plugin 'scrooloose/nerdtree' Plugin 'jistr/vim-nerdtree-tabs' Plugin 'shawncplus/phpcomplete.vim' Plugin 'quramy/tsuquyomi' "Plugin 'Shougo/vimproc.vim' Plugin 'leafgarland/typescript-vim'  call vundle#end() filetype plugin indent on    """ CONFIG """ set history=200 "command history  set so=7 "add 7 lines when moving up/down  set hlsearch "highlight search results set showmatch "highlight matching brackets  set ruler set relativenumber  syntax enable set encoding=utf8 set ffs=unix,dos,mac "unix as standard file type  set expandtab set smarttab set shiftwidth=4 set tabstop=4  set ai "Auto indent set si "Smart indent set nowrap "Wrap lines  set laststatus=2  " whitespace set list set listchars=tab:>-,trail:~,extends:>,precedes:<  set nobackup set nowb set noswapfile  " NERDTree map <C-n> :NERDTreeToggle<CR> "autocmd vimenter * NERDTree  " NERDTreeTabs let NERDTreeShowHidden=1 let g:nerdtree_tabs_open_on_console_startup=1 map <Leader>n <plug>NERDTreeTabsToggle<CR>  au FileType php setl ofu=phpcomplete#CompletePHP au FileType ruby,eruby setl ofu=rubycomplete#Complete au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags au FileType css setl ofu=csscomplete#CompleteCSS au FileType python setl ofu=pythoncomplete#Complete  au BufNewFile,BufRead *.py, *.php, *.rb, *.html, *.js, *.ts, *.md     \ set tabstop=4 |     \ set softtabstop=4 |     \ set shiftwidth=4 |     \ set textwidth=79 |     \ set expandtab |     \ set autoindent |     \ set fileformat=unix   au BufNewFile,BufRead *.css, *.scss, *.json     \ set tabstop=2 |     \ set softtabstop=2 |     \ set shiftwidth=2 |     \ set textwidth=79 |     \ set expandtab |     \ set autoindent |     \ set fileformat=unix  let g:ycm_python_binary_path = 'python'  if !exists("g:ycm_semantic_triggers")   let g:ycm_semantic_triggers = {} endif  " TypeScript plugin tsuquyomi let g:ycm_semantic_triggers['typescript'] = ['.'] let g:tsuquyomi_import_curly_spacing = 0 let g:tsuquyomi_single_quote_import = 1 map <C-i> :TsuImport<CR>  hi Pmenu ctermbg=green 

I did change the line with "BufNewFile" into different ways (1 set command, multiple set commands, with pipes, without pipes, with backslashes, without backslashes, etc.) but nothing helped.

Does anyone know what exactly the problem is?

like image 608
be-ndee Avatar asked Jul 31 '17 13:07

be-ndee


1 Answers

It's hard to notice (I had to look twice), but the problem is the spaces between the patterns in the :autocmd definition:

The syntax is

:au[tocmd] [group] {event} {pat} [nested] {cmd} 

:help {pat} shows that there must not be whitespace between individual patterns.

Example

:au BufNewFile,BufRead *.py, *.php, *.rb, *.html, *.js, *.ts, *.md echomsg 'test'  :au BufRead *.py --- Auto-Commands --- filetypedetect  BufRead     *.py      setf python BufRead     *.py      *.php, *.rb, *.html, *.js, *.ts, *.md echomsg 'test' 

As you can see, Vim only recognizes the first pattern, and takes all following as (Ex) commands!

The :* command executes the contents of a register (probably rubbish), and that causes the E20 error you've seen (probably because there's the ' character in the register).

Fix

Drop the whitespace. As I've already commented, you can also skip repeating the :set commands for each option.

:au BufNewFile,BufRead *.py,*.php,*.rb,*.html,*.js,*.ts,*.md ... 
like image 195
Ingo Karkat Avatar answered Sep 21 '22 20:09

Ingo Karkat