vi 函数跳转

1 篇文章 0 订阅

Ctrl + T 返回
Ctrl + O 返回
Ctrl + ] 跳到光标所在函数或者结构体的定义处
Ctrl + W + ] 分割当前窗口,并且跳转到光标下的tag

yum  install  -y  ctags

# 系统函数
# 笼统版(会生成很多杂项)
ctags-R --languages=c++ --langmap=c++:+.inl -h +.inl --c++-kinds=+px--fields=+aiKSz --extra=+q --exclude=lex.yy.cc --exclude=copy_lex.yy.cc

# 干净版  (最后是自定义想添加路径,可以如: ...opencv/include/ )
ctags -R -I __THROW -I __attribute_pure__ -I __nonnull -I __attribute__ \
--languages=c,c++ --langmap=c++:+.inl -h +.inl --c++-kinds=+px --fields=+aiKSz --extra=+q --exclude=lex.yy.cc --exclude=copy_lex.yy.cc \
-f ~/.systags /usr/include/* /usr/include/sys/* /usr/include/bits/*  /usr/include/netinet/* /usr/include/arpa/* /usr/include/mysql/*

# -R
#表示扫描当前目录及所有子目录(递归向下)中的源文件。并不是所有文件ctags都会扫描,如果用户没有特别指明,则ctags根据文件的扩展名来决定是否要扫描该文件——如果ctags可以根据文件的扩展名可以判断出该文件所使用的语言,则ctags会扫描该文件。

# --languages=c++
# 只扫描文件内容判定为c++的文件——即ctags观察文件扩展名,如果扩展名对应c++,则扫描该文件。反之如果某个文件叫aaa.py(Python文件),则该文件不会被扫描。

# --langmap=c++:+.inl
# 告知ctags,以inl为扩展名的文件是c++语言写的,在加之上述2中的选项,即要求ctags以c++语法扫描以inl为扩展名的文件。

# -h +.inl
# 告知ctags,把以inl为扩展名的文件看作是头文件的一种(inl文件中放的是inline函数的定义,本来就是为了被include的)。这样ctags在扫描inl文件时,就算里面有static的全局变量,ctags在记录时也不会标明说该变量是局限于本文件的。

# --c++-kinds=+px
# 记录类型为函数声明和前向声明的语法元素。

# --fields=+aiKSz
# i表示如果有继承,则标识出父类; a表示如果元素是类成员的话,要标明其调用权限(即是public还是private); S表示如果是函数,则标识函数的signature。

# --extra=+q
# 让ctags额外记录一些东西(见第四、五节)。

# --exclude=lex.yy.cc --exclude=copy_lex.yy.cc
# 告知ctags不要扫描名字是这样的文件。还可以控制ctags不要扫描指定目录,这里就不细说了。

# -f tagfile
# 指定生成的标签文件名,默认是tags. tagfile指定为 - 的话,输出到标准输出。

在你要编辑的源码目录下: ctags -R
最后配置
vim ~/.vimrc
set tags +=./tags
set tags += /…/xxx_tags
source ~/.vimrc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值