Qt Creator标记文件

问题描述:

我使用vim进行C++代码编辑。但是它的代码完成不太好(尽管我已经尝试了许多插件,例如OmniCppComplete)。 Qt Creator的代码完成非常棒,它也有vim风格的编辑功能,对我来说已经足够了。只有对我来说不太好的是,我不能在Qt Creator中使用ctags功能(尽管Qt Creator具有去定义类的功能,但是需要更多的时间来解析源代码)。Qt Creator标记文件

是否有可能创建源代码标记文件,并在Qt Creator中以虚拟vim模式使用它?

+0

QtCreator只有“fakevim”而不是vim嵌入。可能除了基本的vim功能以外都不支持。 – 2013-02-21 11:08:08

Vim中的C++代码完成实际上是优越的。我将概述你必须采取的步骤才能使其工作。然而,在这里我不会详细讨论(比如构建庞大的开源代码库,克隆存储库,安装Vim插件等),否则值得为新手编写一个大型教程。因此,假设你是良好的意识和充分准备的软件开发人员,你去那里能说一口流利指南:

  1. 获取并安装clang_complete(插件VIM);

  2. 获取并安装neocomplcache(Vim的插件);

  3. 如果你在Unix上,那么你很幸运,因为你可能已经在你的系统上安装了LLVMClang,或者你必须使用软件包管理器并使用一个命令来安装它们。如果是这样,那么你可以立即跳到最后一步(#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上,那么它已经安装在你的系统上。否则,你就知道该做什么了。 :)正式的,有两个版本的Python:2.7.3和3.x.x - 你一定要下载并安装两者。 Python是任何开发人员机器上的重要软件。 重要:确保Python2.7.3(不是3.x.x!)在%PATH%环境变量中。

  6. 现在我们已经安装了MinGW-w64,CMake,Python,我们准备构建LLVM和Clang。为了缓解痛苦,请转到我的Out-of-Source Builders项目并向下滚动至指南:使用MinGW-w64构建64位LLVM和Clang for Windows(64位)。如果您在32位Windows上,请不要在标题中注意64位(没关系),只需按照说明操作即可。等待大约一个小时,直到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。从我的角度来看,对于任何使用Vim的C++开发人员来说,这两个插件都必须具有

备注:如果您不知道如何完成此处列出的某些步骤,则必须在此处询问*的其他问题,或者查看其他位置以了解此答案开头所述的原因。

我希望这会有所帮助,而且从现在开始,您会更青睐Vim。 :)