用Vim打开Capistrano的Capfile时为什么会出现错误“E20:Mark not set”?

时间:2014-01-24 08:14:35

标签: ruby vim ruby-on-rails-3.2 capistrano

当我用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文件???

1 个答案:

答案 0 :(得分:1)

要解决此问题,请尝试不做任何配置,即

$ vim -N -u NONE
:filetype plugin on
:e Capfile

此外,您可以使用vim -V20vimlog捕获Vim会话的完整日志(包括错误)。退出Vim后,检查vimlog日志文件以获取适当的命令。它应该显示正在执行的命令。