Clang Complete для Vim

Я скопировал clang_complete.vim в плагин, но когда я набрал . после некоторой переменной, он говорит:

шаблон не найден

Я искал эту проблему, и кто-то сказал, что я должен настроить g:clang_complete_auto: и g:clang_complete_copen:. Как я могу это сделать?

Ответ 1

Попробуйте открыть файл с образцом

vim /tmp/sample.cpp

и введите код cpp

#include <iostream>

int main() {
  std:: // <-- this should complete
}

Обратите внимание, что вам действительно нужно включать заголовки, поскольку завершение выполняется с помощью компилятора. Если это работает, но ваш проект все еще говорит, что "шаблон не найден", тогда clang++, вероятно, не сможет скомпилировать ваш проект. Используете ли вы какие-либо переключатели -I при компиляции кода? Добавьте их в файл с именем .clang_complete в каталоге проекта.

Для меня это отлично работает с моей папкой .vim/plugin, содержащей только файл clang_complete.vim, который доступен для загрузки:

$ find .vim
.vim
.vim/plugin
.vim/plugin/clang_complete.vim

... но в этом выпуске https://github.com/Rip-Rip/clang_complete/issues/39 предлагается, чтобы вам понадобилось больше, чем этот файл (дополнительные файлы находятся в git repo).

Ответ 2

У меня была такая же проблема и разрешила ее, добавив следующее в мой .vimrc

let g:clang_user_options='|| exit 0'

Ответ 3

Следующее заработало для меня на Cygwin, используя clang version 3.0 (tags/RELEASE_30/final), а также в Windows, используя инструкции по созданию Clang и проверенную версию (обычно стабильный, как я читал) вчера (clang version 3.1 (trunk 154056)) и построил с помощью Visual Studio 2010:

" clang_complete
let g:clang_complete_auto = 0
let g:clang_complete_copen = 1
" :h clang_complete-auto_user_options
if has('win32unix') " Cygwin
       " Using libclang requires a Vim built with +python
       let g:clang_use_library = 1
       " Mit der Option "gcc" kriege ich Fehler.
       " Remove "gcc" option as it causes errors.
       let g:clang_auto_user_options='path, .clang_complete'
elseif has('win32') " Windows
       let g:clang_auto_user_options='path, .clang_complete'
       let g:clang_use_library = 1
       let g:clang_library_path='D:\Sourcen\LLVM\build\bin\Debug'
endif

Обратите внимание, что версия Windows может иметь спорадические ошибки утверждения, но работает нормально, хотя и не так, как версия Cygwin. Предположим, что это связано с использованием файлов заголовков MSVC и GCC.

Версия Cygwin имеет начальную error: release unlocked lock, но она работает независимо.

Ответ 4

Вы пытались скомпилировать код вне Vim, явно вызывая Clang в командной строке?

У меня была такая же проблема с моим кодом, но оказалось, что Clang не смог скомпилировать мой код из-за использования библиотек MPI (mpich2). Может быть, подобная проблема приводит к тому, что Клэнг потерпит неудачу в вашем случае? В моем случае, если я удалю MPI-зависимости, все будет хорошо, например, в чем-то вроде:

#include <iostream>
#include <string>

int main() {
    std::string myString("test string");
    std::cout << myString.size() << std::endl; // After typing the dot, I get a list of std::string methods
}

По-моему, я все еще пропустил clang_complete в моем коде MPI. Кто-нибудь нашел решение для этого?

Ответ 5

Чтобы настроить Vim, вы должны найти или создать файл .vimrc:

$vim ~/.vimrc

Затем введите:

let g:clang_complete_copen = 1