ubuntu vim改造----阅读代码神器_if(debug==注释)的博客-程序员宝宝

技术标签: 日常使用技巧  

安装ctags和cscope

sudo apt-get install ctags

sudo apt-get install cscope

在/home/username/下建立一个文件夹 .vim/plugins 或 .vim/plugin(vim的版本不同,目录不同,一般是在.vim/plugin下),注意:是在用户的home目录下进行创建,而且是隐藏文件夹。

在.vim/plugin目录下创建以下两个文件

cs_search_string.vim

"cs search word
func CS_Search_Word()
    let w = expand("<cword>")
    exe "cs f s" w
    exe "copen"
endfunc

" find the define
func CS_Search_define()
    let w = expand("<cword>")
    exe "cs f g" w
    exe "copen"
endfunc

" find call what funcs
func CS_Search_whatfunc()
    let w = expand("<cword>")
    exe "cs f d" w
endfunc

" find called func
func CS_Search_calledfunc()
    let w = expand("<cword>")
    exe "cs f c" w
endfunc


" find where file the func is
func CS_Search_funcfiles()
    let w = expand("<cword>")
    exe "cs f i" w
endfunc

 

search_word.vim

 

"search word
func Search_Word()
    let w = expand("<cword>")
    exe "vimgrep" w "./**/*.c ./**/*.h"
    exe "copen"
endfunc

 

在用户自己的home目录下创建自己的.vimrc文件。注意,以下文件是我的配置,你可以修改成你的配置,我在相关的映射上都加上了注释。该文件的内容如下:

set nu
set tabstop=4
set et
set fo-=r
set noautoindent
syntax on
" 把光标放到一个函数上,按f5就可以打开该函数的定义窗口
map <F5> <C-w>]
" 按f6关闭定义窗口
map <F6> <C-w>c
" 按f4可以查看括号的匹配
map <F4> <S-%>
" 在插入模式下输入zz,即可退出编辑状态
imap zz <Esc>
set sw=4
"map <F2> :s/$/\=   strftime("    %Y-%m-%d %H:%M:%S")<Enter>
" 在光标所在行的末尾插入日期,这个可以按自己的需要去留
map <F2> :s/$/\=   strftime(" %Y-%m-%d")<Enter>
" 在项目级别查找单词所在的地方,并弹出窗口
map <F9> :call Search_Word()<CR>
" 按<查看前一项内容
map < :cprevious<CR>
" 按>查看后一项内容
map > :cnext<CR>
" 只是查看函数被调用的地方,而不是字符串搜素
map <F7> :call CS_Search_Word()<CR>
" 关闭弹出窗口
map <F8> :cclose<CR>

if has("cscope")
        set csprg=/usr/bin/cscope
        set csto=0
        set cst
        set nocsverb
        " add any database in current directory
        if filereadable("./cscope.out")
            cs add ./cscope.out
        " else add database pointed to by environment
        elseif $CSCOPE_DB != ""
        "if $CSCOPE_DB != ""
            cs add $CSCOPE_DB
        endif
        set csverb
endif

set cscopequickfix=e-,i-,s-,t-
" 查看函数被调用的地方
map <F11> :call CS_Search_calledfunc()<CR>
" 查看函数定义
map <F12> :call CS_Search_whatfunc()<CR>
hi Comment ctermfg=6

set nocompatible
"filetype indent on
"set autoindent
"set ic
set hls
"set lbr
colorscheme delek

 

创建建立索引命令

脚本ctcs创建完成后,把脚本放到/usr/local/bin/下即可。

#!/bin/bash
#
# ctcs

star()
{
    ctags -R *   
    if [ $? -eq 0 ]; then
        echo "ctags successfully!"
    fi  
    cscope -qbR
    if [ $? -eq 0 ]; then
        echo "cscope successfully!"
    fi  
}

del()
{
    if [ -f tags -o -f cscope.out -o -f cscope.po.out -o -f cscope.in.out ]; then
        rm -f tags  && echo "clean tags ok!"
        rm -f cscope.* && echo "clean cscope.* files ok!"
    fi  
}

case "$1" in
    -r)
        del
        star
        ;;  
    -d)
        del
        ;;  
    *)  
        echo "usage : ctcs -r|-d"   
        exit 1
esac

exit 0

 

安装GNU global

sudo apt-get install global

配置~/.vimrc

添加如下信息

"gtags 设置项
set cscopetag " 使用 cscope 作为 tags 命令
set cscopeprg='gtags-cscope' " 使用 gtags-cscope 代替 cscope
let GtagsCscope_Auto_Load = 1
let CtagsCscope_Auto_Map = 1
let GtagsCscope_Quiet = 1
let gtags_file=findfile("GTAGS", ";") "查找 gtags 文件
if !empty(gtags_file)
    exe "cs add" gtags_file
endif
 

使用方法

在想要使用gtags的源码根目录执行

gtags

vim打开源码根目录下任意源码文件

Ctrl+} 跳转到函数定义处

Ctrl+t 跳转回来

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZMJ011/article/details/98770371

智能推荐

HOW TO:使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据 (From MSDN)_wukong777的博客-程序员宝宝

有关本文的 Microsoft Visual Basic .NET 版本,请参阅 307021。 本任务的内容摘要 从数据集生成在 Excel 2002 或 Excel 2003 中使用的 XML 使用样式表格式化 XML 使用代码打开转换的 XML参考概要Excel 2002 引入了用扩展标记语言 (XML) 格式打开文件的功能。使用用户界面或代码可以

编程心得_iteye_15487的博客-程序员宝宝

编程心得 2011年03月21日  转自:http://www.360doc.com/content/11/0321/11/3662330_1 03120320.shtml   编程4年-Win32编程-基础编程-界面编程-核心编程-网络编程-驱动编程   如果你对本人或者电子书或者某些乖僻(非深奥)的技术感兴趣,请来信。   联系方式:   手机:1361762100...

【STM32G4】备战蓝桥杯嵌入式---实战---第九届嵌入式省赛—“电子定时器”_蓝桥杯嵌入式第九届定时器_旺旺^淞的博客-程序员宝宝

文章目录前言一、题目二、模块初始化以及功能分析1.模块的初始化2.模块功能分析三、函数实现1.void Display(void);总结前言为了减少篇幅,各模块的初始化均在模块配置中,可以随时去翻看博客,还有function里面的函数,将不再罗列出来,只是截图展示。一、题目基本要求1.1 使用 CT117E 嵌入式竞赛板,完成试题功能的程序设计与调试;1.2 设计与调试过程中,可参考组委会提供的“资源数据包”;1.3 Keil 工程文件以准考证号命名,完成设计后,提交完整、可编译的 Ke.

五分之二用计算机怎么按,【计算器上的M+MR两个功能键各代表什么意思?】-计算器的功能键说明-数学-彭刑捞同学..._weixin_40002846的博客-程序员宝宝

(CM)清除存储值(RM)取出存储值(M-)当前显示值与存储值相减并保存(M+)当前显示值与存储值相加并保存(0-9)按钮分别为输入数字0-9 0-9字符键(.)钮用来输入小数点(+/-)钮用来转换当前值的正负√求平方根%求百分比1/X求X分之一→提供退格键功能C按钮...相关例题题1:计算器中的MR.MC.M-.计算器里面有一个存储器,默认状态下是空的(即0).它能保存任意一个数值,也只能存一个...

CocosCreator中WebSocket使用WSS协议__大猪的博客-程序员宝宝

平常我们使用WebSocket协议是这样的: var ws = new WebSocket("ws://echo.websocket.org"); ws.onopen = function (event) { console.log("Send Text WS was opened."); }; ws.onmessage = function (event) { c...

Java国密算法加密_bcpkix-jdk15on_魏天的博客-程序员宝宝

import cn.hutool.core.codec.Base64;import cn.hutool.core.util.CharsetUtil;import cn.hutool.crypto.Mode;import cn.hutool.crypto.Padding;import cn.hutool.crypto.symmetric.SM4;import cn.hutool.crypto.symmetric.SymmetricCrypto;/** * sm4加密算法工具类 * *...

随便推点

Ubuntu系统下Python的虚拟环境搭建方法简介:venv、virtualenv、pipenv_ubuntu pipenv_嵌入式技术的博客-程序员宝宝

Python进阶:Ubuntu系统下Python的venv轻量级虚拟环境搭建简介一、Python虚拟环境的作用及创建方法简介二、venv搭建虚拟环境2.1 venv虚拟环境创建最简单的例子2.2 熟悉而陌生的pip2.2.1 从PyPI上安装2.2.2 pip根据Requirements文件配置环境三、virtualenv搭建虚拟环境四、pipenv搭建虚拟环境4.1 pipenv简介4.2 pipenv的安装与使用方法一、Python虚拟环境的作用及创建方法简介Python虚拟环境的作用:针对不同项

解决Django出现OverflowError: Python int too large to convert to C long_Black leaves的博客-程序员宝宝

File "C:\Users\huaixiao\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "C:\Users\huaixiao\AppData\Local\Programs\Python\Python37-32\lib\sit..

vue3.0 + ts + vue-property-decorator引入报错_vue3的decorators装饰器报错@_易子辰丶的博客-程序员宝宝

vue-property-decorator是由社区根据vue官方的vue-class-component开发的,现在vue-class-component更新了,原先引入的 Compenots 变成了现在的Options但是vue-property-decorator的源码并未同步更新,所以在用时就会报错解决提示报错后,在node_modules/vue-property-decorator/bin/index.js找到把前面几行代码改成这样就行...

shsh验证服务器,教你从Cydia上取出SHSH并验证有效性!_weixin_39636610的博客-程序员宝宝

原标题:教你从Cydia上取出SHSH并验证有效性!今天在第一篇内容中和大家说了如何让32位设备进行降级,但这其中有个很重要的问题就是如何提取出对应设备的SHSH,虽然说本篇内容并不是对所有人都有效,但至少多了一个可选择的余地。本篇中介绍的Savethemblobs工具 是一款能够抓取苹果上所有SHSH blob的脚本工具,如果过去你曾经有越狱过,在Cydia上就会自动替你保存好SHSH文件,因此...

字节跳动的 8 轮视频面试流程_weixin_38754349的博客-程序员宝宝

点击上方“逆锋起笔”,关注领取学习资源☞ 程序员进阶必备资源免费送「各种技术!」 ☜程序员求职面试(微信号:CoderJob)整理近日,有网友在某社交平台发帖,简单讲了一下自己的字节的视...

cppTest-6.6:this指针_炜X影的博客-程序员宝宝

/** *cppTest-6.6:this指针 * *this指针是隐含在对象成员函数内的一种指针。this也称为“指向本对象的指针”。 *与Java类似,不同之处在于引用成员时是this->*方式而不是this.*。 *author 炜sama */#includeclass ThisTest{private: int i;public: ThisTest(int i)

推荐文章

热门文章

相关标签