编辑ruby文件时,Vim选项值包含错误消息Gem.all_load_paths

时间:2012-01-06 09:15:23

标签: ruby vim

编辑ruby时,在vim中进行编辑时,某些文件(但不是全部)都会出现乱码。

使用:set检查选项,我发现生成其中一个选项值有一些神奇的做法,并且魔术出现问题,并且有一个错误或警告消息,其中选项值应为。这可能会导致副作用。

抛出错误的方法是Gem.all_load_paths,无论我使用的是ruby 1.8.7,1.9.2,还是使用rvm或系统ruby,都会发生错误。使用Ubuntu 11.10

我尝试将omnifunc选项设置为nil,但这并没有解决问题;它似乎是产生这种价值的另一种选择。我正在使用的插件可以在下面看到。

:set
--- Options ---
  autoindent          comments=:#         history=50          keywordprg=ri       scroll=29           suffixesadd=.rb     ttyfast
  backup              filetype=ruby       hlsearch            mouse=a             shiftwidth=2        syntax=ruby         ttymouse=xterm2
  backupdir=~/.tmp    helplang=en         incsearch           ruler               showcmd             tabstop=2
  backspace=indent,eol,start
  balloonexpr=RubyBalloonexpr()
  commentstring=# %s
  fileencodings=ucs-bom,utf-8,default,latin1
  formatoptions=croql
  include=^\s*\<\(load\|w*require\)\>
  includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
  indentexpr=GetRubyIndent()
  indentkeys=0{,0},0),0],!^F,o,O,e,=end,=elsif,=when,=ensure,=rescue,==begin,==end
  omnifunc=rubycomplete#Complete                                                                                                                              f
rom ~/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/deprecate.rb:62:in `all_load_paths'^@^Ifrom -e:1^@1.8/rubygems/deprecate.rb:62:in `send'^@^I
  printoptions=paper:letter                                                                                                                                   /
after,/var/lib/vim/addons/after,~/.vim/afterm,~/.vim/bundle/vim-rails,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim73,/usr/share/vim/vimfiles
  suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc

2 个答案:

答案 0 :(得分:1)

从快照63更新到MacVim的快照64后,我今天也得到了同样的东西。这是一个丑陋的黑客,但我在MacVim.app/Contents/Resources/vim/runtime/ftplugin/ruby.vim中找到了违规行(79)并删除了对Gem.all_load_paths的引用,该引用已被弃用,没有替换。

我发布了a diff of my gist让我走了。目前我不清楚这是否是针对MacVim或Vim报告的错误。

答案 1 :(得分:1)

我在@pbyme上构建了一点点,实际上找到了新方法。凭借我目前的设置,它甚至可以吸引捆绑商带来的一些本地宝石。

关键是将all_load_paths替换为Specification.map(&:lib_dirs_glob)

MacVim.app/Contents/Resources/vim/runtime/ftplugin/ruby.vim

79c79
<     let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
---
>     let s:code = "print ($: + begin; require %q{rubygems}; Gem::Specification.map(&:lib_dirs_glob).sort.uniq;  rescue LoadError; []; end).join(%q{,})"