Qt Creator标记文件
我使用vim进行C++代码编辑。但是它的代码完成不太好(尽管我已经尝试了许多插件,例如OmniCppComplete)。 Qt Creator的代码完成非常棒,它也有vim风格的编辑功能,对我来说已经足够了。只有对我来说不太好的是,我不能在Qt Creator中使用ctags功能(尽管Qt Creator具有去定义类的功能,但是需要更多的时间来解析源代码)。Qt Creator标记文件
是否有可能创建源代码标记文件,并在Qt Creator中以虚拟vim模式使用它?
Vim中的C++代码完成实际上是优越的。我将概述你必须采取的步骤才能使其工作。然而,在这里我不会详细讨论(比如构建庞大的开源代码库,克隆存储库,安装Vim插件等),否则值得为新手编写一个大型教程。因此,假设你是良好的意识和充分准备的软件开发人员,你去那里能说一口流利指南:
获取并安装clang_complete(插件VIM);
获取并安装neocomplcache(Vim的插件);
-
如果你在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%
环境变量中。 需要的另一个软件是CMake(流行的构建系统)。同样,如果你在Unix上,它可能已经安装。如果你在Windows上,那么只需下载并安装它。 重要事项:确保CMake位于
%PATH%
环境变量中。我们需要的最后一件事是Python。再一次,如果你在Unix上,那么它已经安装在你的系统上。否则,你就知道该做什么了。 :)正式的,有两个版本的Python:2.7.3和3.x.x - 你一定要下载并安装两者。 Python是任何开发人员机器上的重要软件。 重要:确保Python2.7.3(不是3.x.x!)在
%PATH%
环境变量中。现在我们已经安装了MinGW-w64,CMake,Python,我们准备构建LLVM和Clang。为了缓解痛苦,请转到我的Out-of-Source Builders项目并向下滚动至指南:使用MinGW-w64构建64位LLVM和Clang for Windows(64位)。如果您在32位Windows上,请不要在标题中注意64位(没关系),只需按照说明操作即可。等待大约一个小时,直到LLVM和Clang建成。
我们差不多完成了,剩下的就是正确配置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。 :)
QtCreator只有“fakevim”而不是vim嵌入。可能除了基本的vim功能以外都不支持。 – 2013-02-21 11:08:08