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