当我用Vim打开我的Capfile时,我显示以下错误:
"Capfile" 36L, 1302C
Error detected while processing BufRead Autocommands for "Capfile" :
E20: Mark not set
为什么会这样?
这是我的 Capfile
:
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
# Includes tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
# https://github.com/capistrano/rvm
# https://github.com/capistrano/rbenv
# https://github.com/capistrano/chruby
# https://github.com/capistrano/bundler
# https://github.com/capistrano/rails/tree/master/assets
# https://github.com/capistrano/rails/tree/master/migrations
#
# Référence : https://github.com/wayneeseguin/rvm-capistrano
# ATTENTION Cette version de la gem est pour Capistrano 2.x. NE PAS L'UTILISER !!!
# require 'rvm/capistrano'
#
# Support de RVM pour la version 3.x de Capistrano
require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
require 'capistrano/bundler'
# require 'capistrano/rails/assets'
# require 'capistrano/rails/migrations'
# D.Magnenat selon instruction du readme de la gem capistrano-rails
# Pour utiliser tout en une seule ligne : bundler, assets, migration
# Nous n'utilisont pas les assets et les migrations. Cela sera fait manuellemet
#require 'capistrano/rails'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
这只发生在Capfile中。如果我将此文件复制到toto.txt文件中,则不会发生。
这必须以某种方式链接到ruby,因为我的文件 /usr/share/vim/vim73/filetype.vim
确实包含以下行:
" Capistrano
au BufNewFile,BufRead Capfile, *.cap setf ruby
=== EDIT @ Ingo Karkat
我使用了你的第一个命令但结果是一样的。 所以我用你的第二个命令来记录。日志文件超过3500行!
论文是最后一行:
ligne 12 : endif
ligne 13 :
ligne 14 : " When there is a dot it is used to separate filetype names. Thus for
ligne 15 : " "aaa.bbb" load "aaa" and then "bbb".
ligne 16 : for name in split(s, '\.')
ligne 17 : ^Iexe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim'
ligne 17 : runtime! ftplugin/conf.vim ftplugin/conf_*.vim ftplugin/conf/*.vim
Recherche de "ftplugin/conf.vim ftplugin/conf_*.vim ftplugin/conf/*.vim" dans "/home/douglas/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim73,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,/home/douglas/.vim/after"
Recherche de "/home/douglas/.vim/ftplugin/conf.vim"
Recherche de "/home/douglas/.vim/ftplugin/conf_*.vim"
Recherche de "/home/douglas/.vim/ftplugin/conf/*.vim"
Recherche de "/var/lib/vim/addons/ftplugin/conf.vim"
Recherche de "/var/lib/vim/addons/ftplugin/conf_*.vim"
Recherche de "/var/lib/vim/addons/ftplugin/conf/*.vim"
Recherche de "/usr/share/vim/vimfiles/ftplugin/conf.vim"
Recherche de "/usr/share/vim/vimfiles/ftplugin/conf_*.vim"
Recherche de "/usr/share/vim/vimfiles/ftplugin/conf/*.vim"
Recherche de "/usr/share/vim/vim73/ftplugin/conf.vim"
chdir(/usr/share/vim/vim73/ftplugin)
fchdir() to previous dir
ligne 17 : sourcement de "/usr/share/vim/vim73/ftplugin/conf.vim"
ligne 1 : " Vim filetype plugin file
ligne 2 : " Language: generic configuration file
ligne 3 : " Maintainer: Nikolai Weibull <now@bitwi.se>
ligne 4 : " Latest Revision: 2008-07-09
ligne 5 :
ligne 6 : if exists("b:did_ftplugin")
ligne 7 : finish
ligne 8 : endif
ligne 9 : let b:did_ftplugin = 1
ligne 10 :
ligne 11 : let s:cpo_save = &cpo
ligne 12 : set cpo&vim
ligne 13 :
ligne 14 : let b:undo_ftplugin = "setl com< cms< fo<"
ligne 15 :
ligne 16 : setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
ligne 17 :
ligne 18 : let &cpo = s:cpo_save
ligne 19 : unlet s:cpo_save
fin du sourcement de /usr/share/vim/vim73/ftplugin/conf.vim
de retour dans function <SNR>17_LoadFTPlugin
Recherche de "/usr/share/vim/vim73/ftplugin/conf_*.vim"
Recherche de "/usr/share/vim/vim73/ftplugin/conf/*.vim"
Recherche de "/usr/share/vim/vimfiles/after/ftplugin/conf.vim"
Recherche de "/usr/share/vim/vimfiles/after/ftplugin/conf_*.vim"
Recherche de "/usr/share/vim/vimfiles/after/ftplugin/conf/*.vim"
Recherche de "/var/lib/vim/addons/after/ftplugin/conf.vim"
Recherche de "/var/lib/vim/addons/after/ftplugin/conf_*.vim"
Recherche de "/var/lib/vim/addons/after/ftplugin/conf/*.vim"
Recherche de "/home/douglas/.vim/after/ftplugin/conf.vim"
Recherche de "/home/douglas/.vim/after/ftplugin/conf_*.vim"
Recherche de "/home/douglas/.vim/after/ftplugin/conf/*.vim"
ligne 18 : endfor
ligne 16 : for name in split(s, '\.')
ligne 17 : ^Iexe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim'
ligne 18 : endfor
ligne 19 : endif
function <SNR>17_LoadFTPlugin a retourné #0
de retour dans Autocommandes FileType pour "*"
ligne 0 : endif
Exécution de Autocommandes BufEnter pour "*"
autocommande sil! call s:LocalBrowse(expand("<amatch>"))
ligne 0 : sil! call s:LocalBrowse(expand("<amatch>"))
appel de function <SNR>10_LocalBrowse('/var/www/odpf/Capfile')
ligne 1 : " unfortunate interaction -- debugging calls can't be used here;
ligne 2 : " the BufEnter event causes triggering when attempts to write to
ligne 3 : " the DBG buffer are made.
ligne 4 : " echomsg "dirname<".a:dirname.">"
ligne 5 : if has("amiga")
ligne 6 : " The check against '' is made for the Amiga, where the empty
ligne 7 : " string is the current directory and not checking would break
ligne 8 : " things such as the help command.
ligne 9 : if a:dirname != '' && isdirectory(a:dirname)
ligne 10 : sil! call netrw#LocalBrowseCheck(a:dirname)
ligne 11 : endif
ligne 12 : elseif isdirectory(a:dirname)
ligne 13 : " echomsg "dirname<".dirname."> isdir"
ligne 14 : sil! call netrw#LocalBrowseCheck(a:dirname)
ligne 15 : endif
ligne 16 : " not a directory, ignore it
function <SNR>10_LocalBrowse a retourné #0
de retour dans Autocommandes BufEnter pour "*"
Écriture du fichier viminfo "/home/douglas/.viminfo"
有趣的是,如果我重命名我的文件:
mv Capfile Capfile.toto
如果我用Vim打开它,就不再有错误消息了!
===编辑
如果我对我的文件/usr/share/vim/vim73/filetype.vim的以下行发表评论错误信息消失:
" Capistrano
"au BufNewFile,BufRead Capfile, *.cap setf ruby
奇怪的是,Vim仍然将文本语法着色为像ruby文件???
答案 0 :(得分:1)
要解决此问题,请尝试不做任何配置,即
$ vim -N -u NONE
:filetype plugin on
:e Capfile
此外,您可以使用vim -V20vimlog
捕获Vim会话的完整日志(包括错误)。退出Vim后,检查vimlog
日志文件以获取适当的命令。它应该显示正在执行的命令。