Better autocomplete in VIM

2019-03-19 13:49发布

All,

I have been working with vim for some time now, and love everything about it - there is only one thing I really miss from IDEs like RubyMine, and that is advanced autocompletion.

For reference, here is my standard VIM setup: https://github.com/wrwright/.vim

I have tried ctags with omnicomplete + supertab, and the one major element I miss is the ability to bring up a context sensitive list of attributes/constants/methods. For example, as I learn RubyMotion, I'd love to have some help remembering iOS SDK constants/attributes/methods, but my VIM autocomplete stops with suggesting class names..or if it does suggest methods/attributes, it lists a ton of methods/attributes that don't even apply to the class I'm working with.

I'd like to (simple example) be able to type UIColor.bl and have it autocomplete with UIColor.blueColor (or suggest if there are multiple options that start with "bl" that are properties of UIColor.

RubyMine does this very well, and if I can get VIM to be similarly smart with autocomplete it would be heavenly (and a great boon while learning RubyMotion/iOS Development.

I have also tried SnipMate (and even a RubyMotion tailored variation at https://github.com/rcyrus/snipmate-snippets-rubymotion), but that doesn't seem to offer the features I'm looking for either.

3条回答
等我变得足够好
2楼-- · 2019-03-19 14:33

Yes, Vim is an awesome... text editor.

As such, it can't be expected to match any IDE's "code awareness". Furthermore, it completely relies on the community for providing more than default support for a given language. If google or the rubymotion site didn't help you to find a serious "autocompletion" solution I doubt you'll find it here.

The process explained in the blog post below sounds ok, if not very precise on the vim configuration front.

http://rayhightower.com/blog/2013/02/12/automatic-ctags-with-rubymotion-and-vim/

查看更多
甜甜的少女心
3楼-- · 2019-03-19 14:38

Relatively satisfied with stock Vim's omnicomplete + vim-ruby and vim-rails having completion abilities on par with NetBeans but with all the bells&whistles of Vim and much lower resource requirements, of course.

From my .vimrc concerning completion options :

autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1 
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
查看更多
兄弟一词,经得起流年.
4楼-- · 2019-03-19 14:51

One thing that I have had a bit of luck with Rubymotion is YouCompleteMe and enabling tag Support. you will need a lot of ram(YCM uses ~2GB when indexing a large tag file) because the tags that rubymotion uses are about 40k tags.

The downside is that the rubymotion people don't seem to want to review pull requests and provide any feedback so I am not sure if they will add the needed things to the rake task that creates the tag files for ycm to work correctly out of the box.

To get it to work you need to set the tags files correct

set tags=./tags;,tags;

and then you need to setup ycm to complete off tags.

let g:ycm_collect_identifiers_from_tags_files = 1

you need to make the ctags file compatible with ycm as well. This pull request does that. You need to add a language field to the ctags creation and then change bridgesupport to ruby.

pull request for that

after that you need to run rake ctags in the root of your project.

If you don't want to modify the project.rb file you could probably create your own rake task that does pretty much the same thing.

查看更多
登录 后发表回答