Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Is there an autocompletion plugin for vim? What are my options here?

At the moment I'm using AutoComplPop, but it has bad integration with snipMate that I use and dead slow on Ruby files (even < 100 lines).

I've seen a couple of other plugins, but they are dead since at least more than a year. So, any ideas?

share|improve this question
    
ACP works very very well here and I have no problem with SnipMate. There's a settings (let g:acp_behaviorSnipmateLength=-1 see :help autocomplpop) you are supposed to add to your .vimrc, did you add it? –  romainl Oct 6 '11 at 5:16

5 Answers 5

Here's a nice one: YouCompleteMe

YouCompleteMe that makes the dropdown menu appear automatically as you type, and it supports fuzzy selection, so if you have an identifier called partition_finder and you type something like ptf while editing a C++ file, the dropdown suggestion list will include both printf and partition_finder because they contain the same letters in the same order. If you have a variable called myBrain, you can type brn and it will suggest that. YouCompleteMe also prioritizes the suggestions based on previous usage frequency.

share|improve this answer

I use neocomplcache with the snipmate + snipmate snippets

let g:neocomplcache_snippets_dir='~/.vim/bundle/snipmate-snippets/snippets'

you can see my vimrc

share|improve this answer

I am trying out necomplecache with neosnippet I am guessing it will have better integration as both are authored by the same person

share|improve this answer

I believe vim has one built-in called OmniComplete. In insert mode use ctrl+x,ctrl+o.

Otherwise you can do keyword completion from insert mode with ctrl+n. When you invoke it it will give you a dropdown displaying possible matches of words found in the file you're editing, as well as found from other files you have open. Keep hitting ctrl+n to cycle through the options. When you come to the word you want, just continue typing like normal.

If you can't find the word you want, ctrl+n will eventually cycle off the list and you can keep typing, or you can hit ESC and then bcw to go back to the start of the offending word and change the word to the one you wanted.

share|improve this answer
    
Vim's built-in one seems to suck. Whenever I press <c-x><c-o> it just says "Pattern not found". However, if I press <c-n>, completions appear in a dropdown right below the word being typed. Is that the same thing? Is there a way to make the autocomplete drop down appear automatically, without having to press a shortcut? –  trusktr Apr 9 '13 at 1:11
    
I'm not aware of a plugin that makes autocomplete pop up without interaction, sorry :(. <c-x><c-o> only works for things that vim has been explicitly told how to support. By default I think it can only do a couple of minor things, and stuff like CSS completion, but if you want something like Eclipse there are a couple of vim plugins that try to provide that for you. –  Conrad.Dean Apr 9 '13 at 15:59
1  
I found a plugin for vim called YouCompleteMe that makes the dropdown menu appear automatically as you type, and it supports fuzzy selection, so if I have an identifier called partition_finder and I type something like ptf while editing a C++ file, the dropdown menu will suggest both printf and partition_finder because they contain the same letters in the same order. If I have a variable called myBrain, I can type brn and it will appear. YouCompleteMe also prioritizes the suggestions based on previous usage frequency. Check it out here: valloric.github.io/YouCompleteMe –  trusktr Apr 13 '13 at 6:04

This is an old question, but I keep coming back to it every now and then with a glimmer of fading hope, thinking that one day I'll find the right combination of plugins to give me perfect autocompletion in Vim. The search continues, but this is all the research I've done over the course of several years.

These are your options, of which I've tried all:

  • Two useful keyboard shortcuts are Ctrl-n, which will auto-complete a word based only on the current buffers you have open (no code introspection), and Ctrl-xCtrl-l which will autocomplete a full line of code if you want to duplicate one. You probably know Ctrl-xCtrl-f, which will auto-complete a file name including path, relative to the current :pwd. The pattern-complete plugin can be mildly useful if you don't search with /\v.

  • Built in Vim "Omnicompletion" triggered by Ctrl-x,Ctrl-o (that's what Vim authors want you to type every time) along with a bunch of language specific plugins, if they exist. You can :echo &omnifunc in a file to see if you already have Omnicompletion set up by Vim in your file of choice.

  • AutoComplPop for automatically opening the above Omnicompletion menu on typing.

  • SuperTab which lets you press Tab to trigger Vim's built in completion.

  • NeoComplCache which is keyword completion (how it's different from Vim's built in completion is not specified), a complex .vimrc setup, and NeoSnippet for snippet completion.

  • A monster combination of exuberant-ctags and DoctorJS (a Mozilla project that has been dead for a year), TagBar and a home-grown thingy to extract completion from the tag files.

  • SnipMate, a basic tag completion plugin, along with snippets, and figure out on your own how to add snippets, as it's a bit tricky.

  • UltiSnips along with UltiSnips-Snippets which are different than the above snippets.

  • Tern for Vim, a promising library that does actual code introspection to get correct autocomplete. However it is buggy, very slow, has memory leaks that will crash Vim, and possibly is abandonware.

  • YouCompleteMe, a fuzzy as-you-type completion that runs a server in the background, along with a home-grown function for snippet completion.

  • Eclim - a noble attempt to run an Eclipse server in the background and tell Vim the autocompletions it introspects on the fly. It works about as well as Tern.

  • Finally, Closetag or delimitMate or autoclose or a home-grown bananagram for auto closing of tags and parenthesis automatically on typing.

Almost every plugin in this list will conflict with almost every other plugin in this list.

YouCompleteMe seems to be the leader of the pack, but I've never been able to get it to work properly with tag completion, and its code-introspection-completion has yet to prove powerful.

My personal opinion is that the current state of the Vim autocompletion world is in bad shape. For small projects you might be fine using one of the above solutions. If you're dealing with a simple API you can keep mostly in your head, non-code-introspection completion will probably be ok. If you are dealing with a large project, or need the benefit of type safety while programming, a full fledged IDE (Eclipse, Visual Studio, WebStorm) is going to suit you much better than Vim will.

The downside of an IDE, of course, is that you will not have the power of Vim at your hands anymore. I haven't used a single IDE that has an acceptable Vim mode.

Vim has a moderate language bias towards untyped C-like languages, and otherwise has the expectation that any language specific features will be added by users as plugins. Unfortunately, this has lead to a splintered autocompletion ecosystem. Some options are decent, but nothing is perfect, and there rarely is a majority leader / best practice.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.