chappar
chappar

Reputation: 7505

Vim Keyword Completion

How do I tell the Vim editor about my include files path so that it can auto complete the function names when I press CTRL+N?

For example, I have a C program like below:

#include<stdio.h>
int main()
{
    sca // here I press control+N, it does not complete to scanf
}

Upvotes: 12

Views: 5620

Answers (3)

Rob Wells
Rob Wells

Reputation: 37103

In your .vimrc, add the paths to your .vimrc:

set path+=/usr/include/**
set path+=/my_include_dir/include
set path+=/my_include_dir/srclib/apr/**
set path+=/my_other_include_dir/srclib/apr-util/**

** means all sub-directories.
*  means all contained directories
.  means all files in the directory of the found file
+= means prepend to existing path (iirc)

You can check the paths as well by opening your file and then entering

:checkpath

This will give you a list of all included files that are missing. N.B. It doesn't seem to handle preprocessor directives, so you will get some false positives. Entering

:checkpath!

Will give a complete list of found and missing include files.

Upvotes: 21

Heikki Naski
Heikki Naski

Reputation: 2720

Vim might also know the path already, if the files are in a standard location. <C-n> uses the 'complete' option and the flag i scans included files. To add i to 'complete':

set complete+=i

you can also get a tags file from the symbols you want completed, which you can use with:

set complete+=t

Upvotes: 3

Kent Fredric
Kent Fredric

Reputation: 57354

Also, Important to note there are many completion functions.

^x ^o  = "omnicomplete" 
^x ^i  = "included-files completion" 
^x ^f  = "path completion" 
^x ^l  = "Complete this line using one that looks the same"

see

:help ins-completion 

for more.

Upvotes: 16

Related Questions