编辑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
答案 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{,})"