vim中ctags添加了qt的include以及src,但是补全仍然不完整,求直接能用的tag或生成完整tag的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim中ctags添加了qt的include以及src,但是补全仍然不完整,求直接能用的tag或生成完整tag的方法相关的知识,希望对你有一定的参考价值。
windows下用vim实现qt代码的自动补全功能1.安装vim.
2.下载ctags for win32并解压到c:\\ctags\\目录下;
3.将c:\\ctags加入windows的path环境变量中;
4.下载omnicppcomplete将解压到vim安装目录的vimfiles目录下;
5.转到qt的include目录下执行ctags -R --c++-kinds=+p --fields=+iaS --extra=+q;命令完成后会在该目录下
生成一个tags文件,它是omnicppcomplete和vim用来作命令补全的数据库。
6.在qt的src目录下再执行一遍上述命令;
7.编辑vim安装目录下的_vimrc文件,将下述两行加入其中
set tags+=c:\\Qt\\4.3.3\\include\\tags
set tags+=c:\\Qt\\4.3.3\\src\\tag
其中c:\\Qt\\4.3.3\\是我机器上qt 的安装目录,根据你的情况作出调整。
8.到你的工程目录下执行5步中的命令;
9.用vim打开一个cpp文件试一下吧,哈哈; 参考技术A
为什么不行呢?
我这里是可以的的。
不知道lz是怎么用的?
======================下面是我的==========================
[lxslc05] /ihepbatch/besd13/lint/workarea/myscripts
$ ls
get_pythonpath.py
[lxslc05] /ihepbatch/besd13/lint/workarea/myscripts
$ ctags get_pythonpath.py
[lxslc05] /ihepbatch/besd13/lint/workarea/myscripts
$ ls
get_pythonpath.py tags
[lxslc05] /ihepbatch/besd13/lint/workarea/myscripts
$ cat tags
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL /official site/
!_TAG_PROGRAM_VERSION 5.5.4 //
getenv get_pythonpath.py /^def getenv(k="PYTHONPATH"):$/;" f
givepackage get_pythonpath.py /^def givepackage(packagename):$/;" f
main get_pythonpath.py /^def main():$/;" f
mysearch get_pythonpath.py /^def mysearch(ford,directory='.'):$/;" f
mysearchdir get_pythonpath.py /^def mysearchdir(ford,directory='.'):$/;" f
mysearchfil get_pythonpath.py /^def mysearchfil(ford,directory='.'):$/;" f
splitenv get_pythonpath.py /^def splitenv(s,sep=':'):$/;" f
VHDL标签在使用ctags + taglist的vim中效率不高
【中文标题】VHDL标签在使用ctags + taglist的vim中效率不高【英文标题】:VHDL tags not efficient in vim with ctags+taglist 【发布时间】:2013-05-29 12:53:05 【问题描述】:我将 Vim 与 ctags 和 Taglist 插件一起使用。编辑.vhd文件时,标签很差(只显示实体)。
我不知道ctags对VHDL的支持是否很弱,或者Taglist是否没有有效地读取ctags创建的文件。
我该如何解决?是否有另一种解决方案可以使用 ctags/taglist 为 vhdl 创建更好的标签?
非常感谢。
【问题讨论】:
你可能想试试 Emacs,VHDL 模式非常先进。 iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.html 呃,我发现emacs很难学。我无法让简单的事情奏效,比如打开新标签。所以我放弃了它(即使我尝试了 VHDL 模式)。另外,快捷方式太多,编辑器也不是很好看……不过,感谢您提供的信息! 回想一下你从基于 GUI 的编辑器迁移到 vim 的时候,当时是不是很困难?但是一旦你习惯了它,你的工作效率就会提高。同样,Emacs 一开始可能很困难,但是一旦您了解了事物的工作方式,它就会变得直观。你只需要找到一个好的教程。你是第一个告诉我他们不想使用优秀的编辑器的人,因为它的外观。你知道 Emacs 也可以在终端中运行吗,不需要单独的丑陋窗口,也许它看起来就像 vim。对于 VHDL,您将永远不会使用任何其他编辑器。 确实,我最近从基于 GUI 的编辑器迁移到了 VIM。现在我的工作效率越来越高,我真的不愿意再改变了。我在 vim 中没有的 emacs 中有什么(除了当前的问题,我确信在某处有解决方案)? ***.com/questions/1430164/… 【参考方案1】:如果您发现 ctags 对某些内容的支持不足,您可以通过在您的主目录中的 .ctags 文件中添加一系列声明来扩展它。例如,对于 VHDL,您可以使用找到的代码 here:
--langdef=vhdl
--langmap=vhdl:.vhd
--regex-vhdl=/^[ \t]*package[ \t]+([^ ]+) is/\1/d,package declarations/i
--regex-vhdl=/^[ \t]*package[ \t]+body[ \t]+([^ ]+) is/\1/b,package bodies/i
--regex-vhdl=/^[ \t]*architecture[ \t]+([^ ]+) of/\1/a,architecture specifications/i
--regex-vhdl=/^[ \t]*entity[ \t]+([^ ]+) is/\1/e,entities/i
--regex-vhdl=/^[ \t]*([^ \t:]+)[ \t]*:[ \t]*process[ \t]*\(/\1/p,processes/i
--regex-vhdl=/^[ \t]*function[ \t]+([a-z0-9_]+)/\1/f,functions/i
--regex-vhdl=/^[ \t]*procedure[ \t]+([a-z0-9_]+)/\1/r,procedures/i
--regex-vhdl=/^[ \t]*type[ \t]+([^ ]+) is/\1/t,type declarations/i
【讨论】:
完美,成功了!谢谢,尤其是 2 个月后。 没问题,我讨厌看到“使用 emacs”作为 vim 问题的答案。【参考方案2】:我已根据您建议的原始 .ctags 文件为端口定义添加了“变量”、“信号”和 :(in|out)。我发现匹配那些也更方便
--langdef=vhdl
--langmap=vhdl:.vhd;.VHD
--regex-vhdl=/^[ \t]*signal[ \t]*([^ ]+)/\1/s,signals/i
--regex-vhdl=/^[ \t]*([^ ]+)[ \t]*:[ \t]*(in|out)/\1/p,ports/i
--regex-vhdl=/^[ \t]*variable[ \t]*([^ ]+)/\1/v,variable/i
--regex-vhdl=/^[ \t]*package[ \t]+([^ ]+) is/\1/d,package declarations/i
--regex-vhdl=/^[ \t]*package[ \t]+body[ \t]+([^ ]+) is/\1/b,package bodies/i
--regex-vhdl=/^[ \t]*architecture[ \t]+([^ ]+) of/\1/a,architecture specifications/i
--regex-vhdl=/^[ \t]*entity[ \t]+([^ ]+) is/\1/e,entities/i
--regex-vhdl=/^[ \t]*([^ \t:]+)[ \t]*:[ \t]*process[ \t]*\(/\1/p,processes/i
--regex-vhdl=/^[ \t]*function[ \t]+([a-z0-9_]+)/\1/f,functions/i
--regex-vhdl=/^[ \t]*procedure[ \t]+([a-z0-9_]+)/\1/r,procedures/i
--regex-vhdl=/^[ \t]*type[ \t]+([^ ]+) is/\1/t,type declarations/i
【讨论】:
【参考方案3】:Ctags 从根本上被破坏了,因为它没有考虑 VHDL 中名称的作用域和重载。只是不要使用它。
您可以找到更多信息in this blog post。
【讨论】:
这是您对我问题的回答:不要使用它吗?您本可以尝试提供一些有建设性的东西,而不是宣传自己的博客。以上是关于vim中ctags添加了qt的include以及src,但是补全仍然不完整,求直接能用的tag或生成完整tag的方法的主要内容,如果未能解决你的问题,请参考以下文章
Centos6.5下虚拟机Linux 关于g++,gdb,ctags安装以及vim的配置
第21月第9日 windows下使用vim+ctags+taglist