设为首页 收藏本站
查看: 645|回复: 0

[经验分享] 使用vim开发php,tag实现类 函数 变量跳转

[复制链接]

尚未签到

发表于 2015-8-30 10:25:04 | 显示全部楼层 |阅读模式
  转自:http://www.kukaka.org/home/showonews/372
  用了很长一段时间vim作为PHP的开发工具,以前用netbeans都是直接按ctrl然后鼠标点一下函数跳到函数定义处的,跟踪代码非常有用,刚改用vim的时候很不习惯,虽然一早就知道tag也可以实现这个功能,但是就是一直试不出来,现在,总算是比较清楚tag的工作原理了,特此记录一下,分享给和我一样搞PHP开发的而且特别喜欢vim的朋友们。
  由于本人工作环境是Ubuntu,所以本文测试环境也是Ubuntu。
编译安装ctags
  下载地址:http://ctags.sourceforge.net/
  下载文件:ctags-5.8.tar.gz
  解压ctags:tar -zxcf ctags-5.8.tar.gz
  进入ctags:cd ctags-5.8
  打上PHP5补丁:
  wget http://svn.bitflux.ch/repos/public/misc/ctags-php5.patch

patch php.c ctags-php5.patch  编译安装:
  ./configure
  make
  sudo make install
  经过这三步后就生成 /usr/local/bin/ctags
使用ctags
  在相应的源码目录运行ctags -R产生相应的tags文件
  cd ~/www/website
  ctags-R *
  这时会在~/www/website目录下生成一个tags文件
  现在我们进入VIM,执行下面的命令:
  :cd ~/www/website       "切换当前目录为~/www/website
:settags=tags        "设置tags选项为当前目录下的tags文件
  现在,我们设置好了tags选项,接下来我们使用它,我们先来查找一个名叫make_html的方法:
  :tagmake_html
  如果make_html方法的定义只存在一个文件中你会看到VIM打开了~/www/my_function.php文件,并把光标定位到make_html方法所在行上。
  如果make_html方法的定义存在多个文件中,会提示:
  找到tag:1 / 14 或更多
  这时我们可以列出保护这个方法的所有文件
  :tselect       "显示列表
  这时会列出所有文件,让我们选择一个文件打开
  # pri kind tag                文件
> 1 F C f         make_html         function/my_function.php
   2 F     f         make_html         xxx/xxx.php
键入数字和回车(empty cacels) :
  根据提示输入我们想查看的文件对应的序号然后回车就可以了。
  :tn      "显示后一个tag到的PHP文件
:tp       "显示前一个tag到的PHP文件
:tags   "显示标签栈

  我们还可以把鼠标停留在想要跳转的 类函数 变量 上面,然后按 ctrl+ ] ,回到原来位置是 ctrl+ t
Tag文件格式
  Tag文件遵循一定的格式,缺省是如下格式:
  {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} ..
  {tagname}      标识符名字,例如函数名、类名、结构名、宏等。不能包含制表符。
  {tagfile}  包含 {tagname} 的文件。它不能包含制表符。
  {tagaddress}   可以定位到 {tagname}光标位置的 Ex 命令。
  {term}           设为“;"”。这是为了兼容Vi编辑器,使Vi忽略后面的{field}字段。
  {field} ..  此字段可选,通常用于表示此{tagname}的类型是函数、类、宏或是其它。
  在{tagname}、{tagfile}和{tagaddress}之间,采用制表符(TAB符,即C语言中的”\t”)分隔,也就是说{tagname}、{tagfile}中不能包含制表符。
  Tag文件的开头可以包含以“!_TAG_”开头的行,用来在tag文件中加入其它信息。VIM能够识别两种这样的标记,经常用到的是“_TAG_FILE_SORTED”标记,例如:
  !_TAG_FILE_SORTED1{anything}
  上面这个标记说明tag文件是经过排序的,并且排序时区分了大小写,对排序的tag,VIM会使用二分法来进行查找,大大加快了查找速度;如果值为0,则表示tag文件未经排序;如果值为2,则表示tag文件是忽略大小写排序的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106224-1-1.html 上篇帖子: php連mssql,access的方法 js連接access數據庫 下篇帖子: php移动文件指针常用的几个函数(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表