Geany是个比较轻量级的代码编辑器,在一些不怎么需要编辑的代码上,我比较常用它来浏览代码。不过它的 跳转到标记定义(Go to tag definition) 功能有点奇怪,一开始死活不知道怎么用,所以值得拿出来说一下。

问题

其实Geany内置了分析代码文件的能力(记得是移植了ctags的代码进来),当打开代码文件的时候,能够分析文件中的tags(包括类、函数和变量)并在 标记(Symbols) 侧边栏列出来, 也能够在文件内或者已经打开的文件间进行跳转(go to tag definition),但不能跳转到未打开的文件 —— Geany称这类tags为workspace tags

P.S. Geany还有一类Global tags,按不同编程语言提供(比如 /usr/share/geany/php.tags, /usr/share/geany/python.tags,另外网站上还提供了一些额外的tags包),文件内容里不包含符号来源信息,所以只能用于自动补全和显示calltip,跟"跳转到标记定义"功能无关)。

解决方法

如何能够实现跳转到未打开的文件呢?在网上搜到如下信息:

This feature (navigating through the source code) has limitations when used alone in Geany. It can only look for definitions in the files being opened. So, to enable it to look for definitions in other closed files in the same folder, you must use this feature inside a certain project created by Geany's built-in Project feature, with the File patterns defined, and combine it with other project plugins that support Generate file list on load.

-- Top Geany features you need to know about

简单地说,方法是: 得定义工程,并启用GProject插件,在工程配置里配置好 source files 文件名匹配模式(比如*.cpp *.c *.h)并勾选上GProject页面的Generate tags for all project files。然后就可以使用了。

解决方法2: 新插件GeanyCtags

虽然用上面的方法已经可以跳转了,但有几个缺点:

tags是每次打开工程时动态分析得到的,如果工程比较小(比如只有100个左右的文件)的话,速度还行,但如果工程比较大就悲剧了

由于tags的分析完全是geany自己在玩,用户就没法用ctags的一些配置参数选项来调整或者改进了

于是,在今年年初,Geany开发组就单独做了一个GeanyCtags插件。不过没想到快半年过去了,Geany还是没发布一个新版本,所以要用的朋友就只能自己编译。

安装方法

推荐用Geany自带的 waf 来编译(至少在Windows下只能用这个。虽然 http://www.geany.org/Support/BuildingOnWin32 这里说的是用 mingw32-make -f makefile.win32, 但 geany-plugins 的daily snapshot 包并没有提供 makefile.win32):

wget -c http://download.geany.org/geany_plugins_git.tar.gz

tar zxf geany_plugins_git.tar.gz

cd geany_plugins_git

./waf configure --enable-plugins=geanyctags,automark

./waf build

sudo make install

然后在Geany的插件管理里面启用 GeanyCtags 插件就可以了。

P.S. 一个好消息是, 这个插件可以在Geany 1.24下编译成功,这样你可以在Geany 1.24里面使用 。但其它一些新插件不一定能行,因为可能用到了Geany主程序的新变动,比如 ProjectOrganizer 插件。

使用方法

1.. 在项目属性中确保 File patterns 已经设置(比如设为 *.rb *.rake)

2.. 点击菜单 Project -> Generate tags 生成tags文件,Geany会在底部的信息栏显示生成tags文件的命令和结果

3.. 在符号(函数名、变量名)上点击右键,可以看到顶部新增了两个菜单项目: Find Tag Definition (GeanyCtags) 和 Find Tag Declartion (GeanyCtags)

4.. 主菜单里面的 Project -> Find tag 可以用来跳转到任意tag,自己输入就是了

补充说明

GeanyCtags生成Tags文件时会在信息栏显示生成tags文件的命令和结果:

find . -not -path '/.' ( -name ".c" -o -name ".h" ) | ctags --totals --fields=fKsSt --extra=-fq --c-kinds=+p --sort=foldcase --excmd=number -L - -f /users/bamanzi/farm/geany_plugins_git/geany_plugins.tags (in directory: /users/bamanzi/farm/geany_plugins_git)

409 files, 117412 lines (3410 kB) scanned in 0.2 seconds (17947 kB/s)

10250 tags added to tag file

10250 tags sorted in 0.01 seconds

从上面的信息可以看出,生成的tags文件跟工程文件在同一个目录,不过文件名并不是 tags ,而是 prjname.tags。

从上面的信息可以看出,tags文件是调用ctags命令生成的,所以格式上是标准的ctags输出。如果你有特殊的配置选项(比如需要增加对vbs的支持),你知道怎么下手了吧

参考:

python标记跳转_Geany的跳转到标记定义“功能如何使用相关推荐

  1. Python Unittest-根据不同测试环境跳过用例详解

    Python Unittest-根据不同测试环境跳过用例详解 本文章会讲述以下几个内容: 1.Unittest 如何跳过用例 2.如何使用sys.argv 3.自动化测试项目中如何一套代码多套环境运行 ...

  2. Python学习笔记:利用控制器跳转不同页面

    Python学习笔记:利用控制器跳转不同页面 程序需要用到数据库student里的学生表t_student 1.创建python项目demo02 2.创建页面index.html 3.创建控制器con ...

  3. python 跳过_python怎么跳过异常继续执行

    有时候我们在进行python编程的时候,想跳过异常继续执行,怎么跳过异常呢,下面来分享一下方法 工具/原料 win10系统 pycharm2018.3.2 方法/步骤 1 第一步创建一个py文件,输入 ...

  4. 跳一跳python源码下载_微信跳一跳游戏python脚本

    微信更新后出来了一块比较火的小游戏,要是一款不涉及到排行的游戏,可能 没人去关注这款游戏.最开自己一直苦练技术,想在微信排行上面装一装,练了好久才跑三百多分.接着在Github(Github地址),有 ...

  5. 用Python来玩微信小游戏跳一跳

    源码 Python源码下载 工具介绍 - Python或Anaconda - 手机或模拟器,用于运行游戏 - ADB 驱动,下载地址 - 相关依赖,例如PIL库 实现原理: 精确测量出起始和目标点之间 ...

  6. python青蛙跳台阶_Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法

    前言 跳台阶.变态跳台阶.矩形覆盖其实都和斐波那契数列是一类问题,文中通过示例代码介绍的非常详细,下面话不多说了,来一起看看详细的介绍吧. 跳台阶 问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上 ...

  7. windows python 执行cmd 命令启动浏览器跳转到指定网页

    windows python 执行cmd 命令启动浏览器跳转到指定网页 1.系统默认浏览器打开百度 cmd命令 # 有没有http都是可以的 start www.baidu.com python im ...

  8. 跳一跳python源码下载_《跳》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...

    基本词义 ◎ 跳 tiào 〈动〉 (1) (形声.从足,兆声.本义:跃) (2) 同本义 [jump:leap:spring] 跳,-一曰跃也.--<说文> 特跳此者.--<左传· ...

  9. jsp超链接中怎么跳转页面跳转_JSP页面跳转方法小结

    实现JSP页面跳转,有如下几种方式: n        使用href超链接标记              (客户端跳转) n        使用JavaScript                   ...

最新文章

  1. Mac环境PHP踩过的“坑” (一)函数重载
  2. 骂骂咧咧的 fastreport 数据隔行换色
  3. Python-描述符
  4. mvn test BUILD FAILURE
  5. 利用邻接表完成图的BFS和DFS
  6. 这台计算机怎么磁盘清理,电脑硬盘满了怎么清理(教你3招彻底清理内存,瞬间多出几十个G)...
  7. C语言基础语言总结(二)
  8. 基于Huffman算法的文件解压缩
  9. Matlab 神经网数据预处理的函数
  10. 日志管理-NLog日志框架简写用法
  11. 大数据、智慧城市与智慧交通 (全集)
  12. 一 破解windows7系统密码
  13. 象棋马走日全球变暖——(bfs例题)
  14. html2canvas+canvas2image 做vue移动端页面海报
  15. java项目遇到难题_Java项目遇到的常见问题
  16. android so strip,用于CMake构建工具链中“strip”命令的Android NDK路径变量
  17. 数字图像处理(第二章)
  18. NY8A051H /8位EPROM-Based 6 I/O 单片机
  19. Python学习干货,如何用Python进行数据分析?
  20. LuLu 2.3.1 汉化版(开源的mac应用防护墙软件)

热门文章

  1. 从国内的源使用pip安装库,提高安装速度
  2. 03 | 高可用保证:Nacos 如何有效构建注册中心集群
  3. Tomcat9URL不支持特殊字符解决方案
  4. LeetCode 两数之和
  5. Struts2-Action的基本流程
  6. CG CTF CRYPTO 异性相吸
  7. Bounce 弹飞绵羊
  8. maven(三)最详细的profile的使用
  9. hudo as3 网络通信框架
  10. 【CentOS Linux 7】实验3【网络配置管理】