2013-02-21 3 views
3

Я использую vim для редактирования кода на C++. Но его завершение кода не так хорошо (хотя я пробовал много плагинов, таких как OmniCppComplete). Окончание кода Qt Creator является удивительным, и у него также есть редактирование стиля vim, функциональность которого достаточно для меня. Единственное, что не очень хорошо для меня, это то, что я не могу использовать функции ctags внутри Qt Creator (хотя у Qt Creator есть функции, чтобы перейти к определению класса, но для анализа исходного кода требуется намного больше времени).Файл тега Qt Creator

Возможно ли создать файл тега исходного кода и использовать его в Qt Creator в режиме поддельного vim?

+0

QtCreator имеет только «fakevim», а не vim. Вероятно, ничего, кроме базовой функции vim, не поддерживается. –

ответ

5

Завершение кода для C++ в Vim на самом деле превосходит. Я опишу шаги, которые вы должны предпринять, чтобы заставить его работать. Тем не менее, я не буду вдаваться в подробности здесь (например, создание огромной базы исходного кода с открытым исходным кодом, клонирование репозитория, установка плагинов для Vim и т. Д.), Потому что в противном случае стоит написать большой учебник для новичков. Таким образом, при условии, что вы хорошо осведомлены и хорошо подготовленный разработчик программного обеспечения, вы идете беглое руководство:

  1. Получить и установить clang_complete (плагин для Vim);

  2. Получить и установить neocomplcache (плагин для Vim);

  3. Если вы находитесь в Unix, то вам повезло, потому что у вас, вероятно, есть LLVM и Clang, которые уже установлены в вашей системе, или вам нужно использовать диспетчер пакетов и установить их с помощью одной команды. Если это так, вы можете сразу перейти на последний шаг (# 7).

    Если вы находитесь в Windows, то вам менее повезло, но это на самом деле лучше с практической точки зрения - у вас будет большой опыт создания огромного материала самостоятельно и заставить все работать независимо от того, что. :)

    Итак, если вы работаете в Windows (и используя Qt Creator, как я вижу), вы можете установить MinGW в свою систему. Если это не так, то я настоятельно рекомендую вам установить кровотечение MinGW-w64. К счастью, вам не нужно его компилировать, так как rubenvb любезно разработал инструментальную цепочку MinGW-w64 в обоих вариантах: targeting 64-bit Windows (aka x64) и targeting 32-bit Windows (aka x86). Просто загрузите его в зависимости от вашей ОС. ПРИМЕЧАНИЕ: Эти ссылки указывают на последние (на момент написания ответа) стабильные сборки MinGW-w64, т. Е. На основе GCC 4.7.2. ВАЖНО: Убедитесь, что MinGW-w64 находится в переменной окружения %PATH%.

  4. Другим необходимым программным обеспечением является CMake (популярная система сборки). Опять же, если вы работаете в Unix, он может быть установлен уже. Если вы находитесь в Windows, просто загрузите и установите его. ВАЖНО: Убедитесь, что CMake находится в переменной окружения %PATH%.

  5. Последнее, что нам нужно, это Python. Еще раз, если вы находитесь в Unix, то он уже установлен в вашей системе. В противном случае, вы знаете, что делать уже. :) Официально есть 2 версии Python: 2.7.3 и 3.x.x - вы обязательно должны скачать и установить оба. Python - важная часть программного обеспечения на любой машине разработчика. ВАЖНО: Убедитесь, что Python 2.7.3 (не 3.x.x!) Находится в переменной окружения %PATH%.

  6. Теперь, когда у нас установлен MinGW-w64, CMake, Python, мы готовы построить LLVM и Clang.Чтобы облегчить боль, перейдите к моему проекту Out-of-Source Builders и прокрутите вниз до . Руководство: постройте 64-разрядные LLVM и Clang для Windows (64-разрядные) с помощью MinGW-w64. Если вы находитесь на 32-битной Windows, не обращайте внимание на 64-bit (это неважно) в названии, просто следуйте инструкциям. Подождите около часа, пока не будут созданы LLVM и Clang.

  7. Мы почти закончили, все, что осталось - это правильно настроить Vim. Здесь я просто предоставил свою конфигурацию, которая, скорее всего, удовлетворит ваши потребности.

Настройка neocomplcache:


let g:neocomplcache_enable_at_startup   = 1 
let g:neocomplcache_enable_smart_case   = 1 
let g:neocomplcache_enable_camel_case_completion = 1 
let g:neocomplcache_enable_underbar_completion = 1 
let g:neocomplcache_min_syntax_length   = 2 

if !exists('g:neocomplcache_force_omni_patterns') 
    let g:neocomplcache_force_omni_patterns = {} 
endif 

let g:neocomplcache_force_overwrite_completefunc = 1 

let g:neocomplcache_force_omni_patterns.c  = '[^.[:digit:] *\t]\%(\.\|->\)' 
let g:neocomplcache_force_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)' 
    \ . '\|\h\w*::' 
let g:neocomplcache_force_omni_patterns.objc = '[^.[:digit:] *\t]\%(\.\|->\)' 
    \ . '\|\h\w*::' 
let g:neocomplcache_force_omni_patterns.objcpp = '[^.[:digit:] *\t]\%(\.\|->\)' 
    \ . '\|\h\w*::' 

inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" 
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" 

clang_complete Настройка:


let g:clang_use_library  = 1 
let g:clang_auto_select  = 0 
let g:clang_complete_auto = 0 
let g:clang_complete_copen = 1 
let g:clang_complete_macros = 1 
let g:clang_complete_patters = 1 

let g:clang_library_path = 'D:/Toolchains/x64/LLVM/3.3/bin' 

let g:clang_auto_user_options = 'path, .clang_complete' 

Для получения дополнительной информации об этих двух плагинов использовать справочную документацию Vim в: :h clang_complete в nd :h neocomplcache. Есть много вариантов настройки, особенно в neocomplcache. С моей точки зрения оба плагина: должны иметь для любого разработчика на C++, который использует Vim.

ПРИМЕЧАНИЕ: Если вы не знаете, как выполнить некоторые из шагов, перечисленных здесь, вы должны либо задать дополнительные вопросы здесь, на StackOverflow или искать в другом месте по причине, описанной в начале этого ответа.

Надеюсь, это поможет, и теперь вы будете больше благодарны Vim за свои усилия в области развития. :)