【vim 学习系列文章 5 - cscope 过滤掉某些目录】

这篇具有很好参考价值的文章主要介绍了【vim 学习系列文章 5 - cscope 过滤掉某些目录】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上篇文章:【vim 学习系列文章 4 - vim与系统剪切板之间的交互】
下篇文章:【vim 学习系列文章 6 – vim 如何从上次退出的位置打开文件】文章来源地址https://www.toymoban.com/news/detail-662697.html

cscope 过滤目录介绍

第一步创建自己的cscope脚本~/.local/bin/cscope.sh,如下:

function my_cscope()
{
        CODE_PATH=`pwd`
        echo "$CODE_PATH"
        echo "start cscope...."

        if [ ! -f "$CODE_PATH/cscope.files" ];then
                echo "cscope.files not exist!"
        else
                rm -f $CODE_PATH/cscope.*
        fi

        if [ ! -d "$CODE_PATH/rt-thread" ];then
                find . \( -path './arch/arc'            \
                    -o -path './arch/alpha'             \
                    -o -path "./arch/blackfin"          \
                    -o -path "./arch/cris"              \
                    -o -path "./arch/h8300"             \
                    -o -path "./arch/ia64"              \
                    -o -path "./arch/m68k"              \
                    -o -path "./arch/microblaze"        \
                    -o -path "./arch/mn10300"           \
                    -o -path "./arch/openrisc"          \
                    -o -path "./arch/powerpc"           \
                    -o -path "./arch/score"             \
                    -o -path "./arch/sparc"             \
                    -o -path "./arch/um"                \
                    -o -path "./arch/x86"               \
                    -o -path "./arch/c6x"               \
                    -o -path "./arch/m32r"              \
                    -o -path "./arch/microblaze"        \
                    -o -path "./arch/nios2"             \
                    -o -path "./arch/powerpc"           \
                    -o -path "./arch/sh"                \
                    -o -path "./arch/um"                \
                    -o -path "./arch/xtensa"            \
                    -o -path "./arch/cris"              \
                    -o -path "./arch/hexagon"           \
                    -o -path "./arch/mips"              \
                    -o -path "./arch/openrisc"          \
                    -o -path "./arch/s390"              \
                    -o -path "./arch/sparc"             \
                    -o -path "./arch/unicore32"         \
                    -o -path "./arch/parisc"            \
                    -o -path "./arch/tile"              \
                    -o -path "./arch/tile"              \
                    -o -path './arch/c6x' \)            \
                    -prune -o -name "*.[chxsS]" -print > cscope.files
        else
                find . \( -path "./rtos/rt-thread/rt-thread/bsp/mb9*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/at91*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/ess*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/gd3*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/lpc*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/ls*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/mi*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/imx*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/rasp*" \
                    -o -path "./rtos/rt-thread/packages/packages/iot/*" \
                    -o -path "./rtos/rt-thread/rt-thread/bsp/stm32/stm32f*" \
                    -o -path "./bootrom"        \
                    -o -path "./u-boot"         \
                    -o -path "./tools" \)       \
                    -prune -name "*.cc" -o -name "*.[chxsS]" \
                    -print > cscope.files
        fi

        echo "cscope -Rbkq -i cscope.files"
        cscope -Rbkq -i $PWD/cscope.files > cscope.log 2>&1
        echo "cscope finished"
}

my_cscope;

我的这个脚本首先去区分当前执行cscope命令的目录是rt-thread目录还是linux 目录,因为不同的代码要过滤过目录不一样。
此外,还会通过 重定向cscope在解析文件cscope.files过程中输出的log重定向到 cscope.log 方便问题问题。关于 find 命令的使用见 find 命令高效使用文章

第二步~/.bashrc 中添加 mycscope 命令,添加完后,别忘记执行 source ~/.bashrc

alias mycscope='source ~/.local/bin/cscope.sh'

第三部测试效果:

 (*^~^*) ~/workbase/cix_linux/linux> mycscope
/home/sam/workbase/linux
start cscope....
cscope -Rbkq -i cscope.files
cscope finished
(*^~^*) ~/workbase/cix_linux/linux> ls
arch   COPYING  cscope.files   cscope.out     drivers  init    Kconfig  LICENSES     mm      samples   sound  virt
block  CREDITS  cscope.in.out  cscope.po.out  fs       ipc     kernel   MAINTAINERS  net     scripts   tools
certs  crypto   cscope.log     Documentation  include  Kbuild  lib      Makefile     README  security  usr

从下图中可以看到通过cscope命令查找 函数定义定义时只显示了linux/arch 目录下的几个文件,滤除了上文中设置的那些目录:
【vim 学习系列文章 5 - cscope 过滤掉某些目录】,# vim 学习系列文章,cscope目录滤除,cscope目录过滤,目录过滤cscope

上篇文章:【vim 学习系列文章 4 - vim与系统剪切板之间的交互】
下篇文章:【vim 学习系列文章 6 – vim 如何从上次退出的位置打开文件】

到了这里,关于【vim 学习系列文章 5 - cscope 过滤掉某些目录】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vim 学习系列文章 19 -- 映射快捷键调用两个函数 A 和B】

    请阅读 【嵌入式开发学习必备专栏 之 Vim】 在 Vim 中,如果想通过按下 gcm 来调用两个函数,比如 FunctionA 和 FunctionB ,需要先定义这两个函数,然后创建一个映射。这个映射将会在被触发时依次调用这两个函数。 首先,确保 .vimrc 文件中包含了这两个函数的定义,以及一个用

    2024年04月13日
    浏览(36)
  • Linux系列文章 —— vim的基本操作(误入vim退出请先按「ESC」再按:q不保存退出,相关操作请阅读本文)

    vim-操作篇 进程概念篇 进程地址空间篇 Linux,是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用

    2024年02月03日
    浏览(35)
  • vscode 系列文章目录 - ctrl+鼠标左键无效

    vscode 中有时会遇到 “Alt + 鼠标点击” 有效,但 “Ctrl + 鼠标点击” 无效,这时可以通过 Ctrl + , 进行系统配置。 进入VScode的首选项,选择设置(快捷键 Ctrl + , ),输入Go to definition,找到如下两个设置。 Editor: Multi Cursor Modifier 设置成 alt “editor.gotoLocation.multipleDefinitions” 设置

    2024年04月23日
    浏览(40)
  • Git系列文章目录 - Git 子模块git submodule使用

    项目中有时会遇到会涉及子模块的使用,比如 flatpak 项目包含多个子模块。 进入需要添加子模块的目录,一般是项目根目录。 删除子模块目录及源码: 删除项目目录下.gitmodules文件中子模块相关条目: 删除配置项中子模块相关条目: 删除模块下的子模块目录: 清除子模块

    2024年01月20日
    浏览(41)
  • AIGC系列文章目录 第一章 AIGC 与AI对话,如何写好prompt?

    生成式人工智能AIGC(Artificial Intelligence Generated Content)是人工智能1.0时代进入2.0时代的重要标志。 AIGC对于人类社会、人工智能的意义是里程碑式的。 短期来看 AIGC改变了基础的生产力工具, 中期来看 会改变社会的生产关系, 长期来看 促使整个社会生产力发生质的突破,在

    2024年02月06日
    浏览(39)
  • Linux 学习目录合集【文章索引】

    前言:本内容为笔者自学笔记内容。 本文中的操作环境:腾讯云服务器:CentOS 7.6 64bit 学习阶段规划: Linux 基本操作【基本命令、vim、makefile使用等】 Linux 系统【进程:概念、控制、通信;IO基础;多线程等】 Linux 网络【网络基础、套接字编程、IO高级等】 学习集: C++ 入门

    2024年02月07日
    浏览(38)
  • idea中如何过滤某些文件不提交

    在开发过程中,经常会遇到一些文件是我们不想提交的内容。那么应该如何过滤掉?不去提交到我们的git仓库? 比如,我们常用的一些配置文件、打包文件、target下的编译文件, 我们经常使用的是在项目中配置上.gitignore文件,将我们需要过滤掉不提交的内容全部列出来,这

    2024年02月13日
    浏览(46)
  • AIGC系列文章目录 第三章 AIGC 简单易用免费的AI图像生成器: Stable Diffusion

    目前亲测体验的AI图像生成器有NovelAI、MJ和Stable Diffusion。其中, 支持免费、无限生成、超高专业级画质 的只有 Stable Diffusion 。 Stable Diffusion 由 Stable Diffusion XL 提供支持,是一款最先进的工具,可以将您的想象力变为现实。 只需点击几下和简单的文本输入,您就可以创建令人

    2024年02月03日
    浏览(53)
  • Android 9.0 pms获取应用列表时过滤掉某些app功能实现

     在9.0的系统rom定制化开发中,对系统定制的功能也是很多的,在一次产品开发中,要求在第三方app获取应用列表的时候,需要过滤掉某些app,就是不显示在app应用列表中,这就需要在pms查询app列表时过滤掉这些app就可以了,接下来就实现这些功能 pms获取应用列表时过滤掉某些

    2024年02月10日
    浏览(36)
  • bat 打开 cmd 跳转某个目录并执行某些命令

    当遇到多条命令要在 cmd 下执行时,可以用 bat 脚本一次性执行所有命令 例如: 要跳转到桌面名为sentinel的文件夹下,用java -jar执行里面的jar包 普通情况下,Windows+R打开cmd,切换到sentinel文件夹,再执行 java -jar 现在只需要执行 bat 文件,文件内容: start cmd /k \\\"cd /d C:Userseoi

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包