吵归吵,闹归闹,别拿Geany开玩笑.
Geany官方的定位可是一个轻量级IDE,不仅仅是一个编辑器.
Geany基于scintilla和ctags这两个组件开发,下限不会低.
基于scintilla支持多语言语法高亮和代码折叠,基于ctags索引项目内所有符号以实现符号补全+参数提示+符号列表+符号跳转.
Geany支持同时打开多个项目,具体操作就是:
启动Geany时加入参数"--new-instance"打开一个新实例,在一个Geany新实例中打开一个Geany项目.
Geany内置有一个"项目(Project Organizer)"插件,启用后可以增强Geany的项目功能. 比如"符号补全(Ctrl+Space)","参数提示(Ctrl+Shift+Space)","符号跳转(Ctrl+T)"这几个功能, 范围扩大到项目目录内所有文件,而不仅仅是打开的文件. 另外,在代码里选中"文件路径",右键点击"Open Selected File"即可打开项目中第一个匹配的该文件.
Geany右键的"查找用法"只能在在打开的文件中查找调用了这个符号的位置. "Project Organizer"和"GeanyCtags"插件都提供了"查找符号(Find Symbol)"的支持, 可以实现在整个项目中查找符号定义的位置,比Geany"在多个文件中查找(调用grep)"更快而且更精确.需要查找项目中调用了这个符号的位置,可以使用"在多个文件中查找(调用grep)".
为了实现符号提示,Geany除了可以自动收集项目内的源代码符号实现提示,还可以调用"geany -g"生成外部源代码的tags以实现符号提示,比如Geany内置的PHP库符号"std.php.tags"有700KB,Python库符号"std.py.tags"有200KB.开发者可以调用"geany -g"生成"wordpress.php.tags"和"django.py.tags",甚至根据Java的rt.jar的源代码"jdk/src.zip"生成Java的tags等等,比如:
geany -g ~/.config/geany/tags/wordpress.php.tags $(find . -type f -name '*.php')
上面这些项目功能,就是为什么Geany自称IDE的原因.
Geany支持给任意行添加"标记(marker)",以便用户在一个文件内进行自定义的"标记跳转".
添加/删除标记: Ctrl+M 或者在行前点击鼠标左键
跳转到文件内的上一个标记: Ctrl+,
跳转到文件内的下一个标记: Ctrl+.
关闭文件时,标记会被自动删除.
Geany还有很多插件,我这个回答就不一一赘述了.
Geany也能很好地配合很多外部工具工作,比如GeanyCtags就调用了外部的ctags命令,在多个文件中查找就调用了grep命令,HTML/XML格式化可以调用tidy命令.
位置1: 菜单-生成-设置生成命令-自定义命令(输出结果到信息窗口)
位置2: 右键-格式-发送选中的文字到-自定义命令(返回处理后的结果)
用户还可以配置很多自己的命令,比如配置给PHP文件的几个生成命令:
语法检查 php -l
静态分析 phpstan
相应地,用户也可以给Python文件配置对应的生成命令.
比如下图就是使用给Geany配置一个PHP静态分析器PHPStan,用于检查PHP代码中存在的错误,比如最常见的调用没有定义的量和参数和返回值的类型错误.
值得一提的是,假如你开发了一门新的编程语言,比如名字叫做"CX",后缀名是"cx".那你只要参考其他语言的filetypes,给Geany提供一个文件定义配置"filetypes.CX.conf"并添加到"filetype_extensions.conf"中,Geany就能为你的这个新语言提供跟其他语言一样的语法高亮和符号提示等支持.
比如:
1.参考filetypes.Kotlin.conf写一个filetypes.CX.conf,把styling和lexer_properties都设为C,并定义自己的keywords和构建命令.
2.然后在 filetype_extensions.conf 中添加 "CX=*.cx;".
因为Geany基于C和GTK3开发,所以Linux上内存占用远比基于Java的PyCharm和基于Electron(Chromium)的VSCode要小.
总而言之,Geany不是一个弱鸡编辑器,不要被Geany朴素的外表欺骗,写Python这个教程的老外,推荐Geany是有理由的.深入使用过Geany后就知道,这是个具有良好生产力的开发者工具.
更新:
Geany在1.39版本增加了标记列表过滤(symbol list filter)功能,在一个文件中包含很多类,方法,变量时,能够根据用户的输入快速筛选出匹配的标记,实现类似Sublime Text和JetBrains IDE的"Goto Symbol"功能.
另外,Geany在1.39自行实现了GTK2时代用鼠标滚轮切换编辑器标签页的功能.