首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt Creator标记文件

Qt Creator标记文件
EN

Stack Overflow用户
提问于 2013-02-21 19:01:07
回答 1查看 2.5K关注 0票数 3

我使用vim进行C++代码编辑。但是它的代码补全效果不是很好(尽管我尝试过很多插件,比如OmniCppComplete)。Qt Creator的代码补全功能非常棒,它也有vim风格的编辑功能,这对我来说已经足够了。对我来说唯一不好的是我不能在Qt Creator中使用ctags功能(虽然Qt Creator有转到类定义的功能,但它需要更多的时间来解析源代码)。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-17 17:07:31

在Vim中,C++的代码自动完成功能实际上更好。我将概述为使其工作而必须采取的步骤。但是,我不会在这里深入讨论太多细节(比如构建巨大的开源代码库、克隆存储库、为Vim安装插件等)。因为不然的话,为新手写一篇大型教程是值得的。所以,假设你是一个有良好意识和准备充分的软件开发人员,那么你就有了一个流利的指南:

  1. 获取并安装clang_complete (Vim插件);
  2. 获取并安装neocomplcache (Vim插件);
  3. 如果您在Unix上,那么您是幸运的,因为您可能已经在系统上安装了LLVMClang,或者您必须使用包管理器并使用单个命令来安装它们。如果是这样,那么你可以立即跳到最后一步(#7)。

如果你在Windows上,那么你就没那么幸运了,但从实用的角度来看,这实际上更好-你会有一个很棒的经验,可以自己构建巨大的东西,无论发生什么事情都能让事情正常工作。:)

所以,如果你使用的是Windows (在我看来使用的是Qt Creator ),那么你的系统上可能已经安装了MinGW。如果不是这样,那么我强烈建议您安装一个尖端的MinGW-w64。幸运的是,您不必自己编译它,因为rubenvb已经在targeting 64-bit Windows (aka x64)targeting 32-bit Windows (aka x86)这两个变体中友好地构建了MinGW-w64工具链。只需根据您的操作系统下载一个。注释:这些链接指向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!)在我们已经安装了MinGW-w64,CMake,variable.

  • Now的%PATH%环境中,我们已经准备好构建LLVM和Clang了。为了减轻痛苦,请转到我的Out-of-Source Builders项目,然后向下滚动到MinGW指南:使用MinGW-w64构建64位LLVM和Clang for Windows (64位)。如果你使用的是32位视窗系统,请不要注意标题中的64位(没关系),只需按照那里的说明进行操作即可。等待大约一个小时,直到LLVM和Clang构建完成。

  • 我们差不多完成了,剩下的就是正确地配置Vim了。在这里,我将简单地提供我的配置,它很可能满足您的需求。

配置neocomplcache

代码语言:javascript
复制
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

代码语言:javascript
复制
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:h neocomplcache。有很多选项可以调整,特别是在neocomplcache中。在我看来,这两个插件都是,对于任何使用Vim的C++开发人员来说都必须有

备注:如果您不知道如何完成此处列出的一些步骤,您将不得不在StackOverflow上提出其他问题,或者出于本答案开头所述的原因寻找其他地方。

我希望这会对您有所帮助,并且您会从现在开始在开发工作中更喜欢Vim。:)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15000550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档