引言:
如果你在读程序时看了一个函数调用, 或者一个变量,或者一个宏等等, 你想知道它们的定义在哪儿, 怎么办呢?
哈哈,你的困惑也是广大Linux用户的困惑,现在流行用是的【ctrl+]】, 当光标在某个函数或变量上时, 按下"Ctrl+]",光标会自动跳转到其定义处。
下载:
Ubuntu下 执行: sudo apt-get install ctags
一、建立索引文件
当然要实现跳转就必须要生成tags索引文件才能用我们的ctags帮你干活,
因为ctags是通过识别tags文件来工作的,tags文件生成在哪个文件夹下,哪个文件夹下的文件就能享受ctags功能。
下面讲tags文件的生成
在你想要建立索引文件的文件夹目录下执行:
sudo ctags -R *
我是在workspace/下执行 sudo ctags -R * 命令的所以tags索引文件就在该文件夹下生成
注意tags文件的生成位置决定了你是否能在你的文件夹下看代码时使用ctags完成跳转功能
二、设置索引文件位置
当然我们是通过Vim来查看文件的,所以还需告知vim程序tags文件的位置,即修改vim配置文件~/.vimrc文件
现在可以到workspace文件夹下的随便一个文件里去跳了
ctrl+] 跳转至光标所在对象定义之处
ctrl+t 返回跳转前位置
说到~/.vimrc这里顺便顺便分享一下vim一些配置
set nu "显示行号
synta on "自动语法高亮
set tabstop=4 "tab代表4个空格
set mouse=a "开启鼠标模式
taglist下载
wget http://www.vim.org/scripts/download_script.php?src_id=19574 -O taglist.zip
遇到小问题:
抛错: “ E492:不是编辑器的命令TlistToggle”
解决:
将解压taglist时生成的doc,plugin两个文件放在~/.vim文件夹下,没有~/.vim文件的就自己执行mkdir ~/.vim命令再将doc,plugin两个文件夹放到~/.vim下面后重启就ok 了
后续操作参考:大佬链接
三、自动补全功能
下载YouCompleteMe会用到GitHub为了避免蜗速下载所以先修改一下自己Ubuntu的hosts文件,再说以后会经常使用到GitHub,修改hosts文件很有必要。首先vim打开hosts文件
sudo vim /etc/hosts
用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址,然后在vi打开的hosts文件中添加如下格式,wq保存退出。
注意:因为这些IP都是过一段时间会发生变化的,所以如果很长一段时间没有使用github了,最好先查IP修改host文件
192.30.253.112(查询到的IP) github.com(github域名)
151.101.44.249(查询到的IP) github.global.ssl.fastly.net(github域名)
步骤:同样的先下载YouCompleteMe再将YouCompleteMe路径告诉vim就可以用自动补全功能了
备注一下:上面博文执行命令./install.py --clang-completer 有的版本会受限制,我的是ubuntu1604不会抛错,但ubuntu1404会抛错:
your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
解决:
sudo apt-get install g++
最后生成YouCompleteMe文件夹后别忘了在~/.vimrc文件中告诉vim程序YouCompleteMe所在路径了,
我这里路径是/home/google/YouCompleteMe
vim打开 ~/.vimrc文件添加下面格式命令保存退出,然后就可以下课了。
set runtimepath+=/home/google/YouCompleteMe(YouCompleteMe文件夹的路径)
我用的vim配置文件一般是这个:https://github.com/ubunt1404/vim_attribution_setting/blob/master/vimrc
要用的话克隆下按照这篇博文安装一些东西,再改一改里面的路径(YoucompleteMe 和 tags)基本就可以用了,
如果是ubuntu1404的系统的话就墙裂推荐这位老哥的https://blog.youkuaiyun.com/zhang_han666/article/details/80265254,试过几次都是OK的
效果图如下: