Эта строка должна вызывать проблему:
autocmd FileType cpp set omnifunc=cppcomplete#CompleteCPP
Видите ли, у вас есть следующие команды:
au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main
autocmd FileType cpp set omnifunc=cppcomplete#CompleteCPP
Дело в том, что первая автокоманда выполняется при входе в буфер с расширением "cpp" или "hpp". Второй выполняется, когда тип файла установлен в cpp, что всегда происходит после открытия буфера. Даже неважно, как вы их заказываете, второй всегда будет выполняться после первого, поэтому omnifunc
всегда будет установлен на cppcomplete#completeCPP
, а вы этого не хотите. Вам следует заменить обе этих строк одной строкой:
autocmd FileType cpp set omnifunc=omni#cpp#complete#Main
На всякий случай, если это все еще не работает, попробуйте только это вместо этого:
au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main
Для будущих проблем отладки, небольшой совет: вы можете проверить значение omnifunc
, выполнив set omnifunc
. Таким образом, вы можете проверить, действительно ли вам нужна функция завершения.