Завершение ключевого слова Vim

Как сообщить редактору Vim о моем пути к файлам include, чтобы он мог автоматически заполнять имена функций, когда я нажимаю CTRL + N?

Например, у меня есть программа на C, как показано ниже:

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

Ответ 1

В .vimrc добавьте пути к вашему .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)

Вы также можете проверить пути, открыв файл и затем введя

:checkpath

Это даст вам список всех включенных файлов, которые отсутствуют. Нотабене Кажется, он не обрабатывает директивы препроцессора, поэтому вы получите ложные срабатывания. Ввод

:checkpath!

Дает полный список найденных и отсутствующих файлов include.

Ответ 2

Кроме того, важно отметить, что есть много функций завершения.

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

см.

:help ins-completion 

для большего.

Ответ 3

Vim может также знать путь уже, если файлы находятся в стандартном расположении. < С-п > использует опцию 'complete', а флаг i сканирует включенные файлы. Чтобы добавить i в 'complete':

set complete+=i

вы также можете получить файл тегов из символов, которые вы хотите заполнить, которые вы можете использовать с помощью:

set complete+=t