Create a web.py project in Geany
吵归吵,闹归闹,别拿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右键的"查找用法"只能在在打开的文件中查找调用了这个符号的位置. 启用"GeanyCtags"插件后,可以在整个项目中查找调用了这个符号的位置. GeanyCtags比Geany"在多个文件中查找(grep)"更快而且更精确. 在"项目"菜单下执行"Generate tags"后,会生成"项目tags文件",位置在项目目录的上一层目录. 然后在代码里选中要查找的符号,右键点击"Find Tag Definition"即可在整个项目中查找调用了这个符号的位置.
为了实现符号提示,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内置的 std.php.tags 提供的符号补全
上面这些项目功能,就是为什么Geany自称IDE的原因.
Geany支持给任意行添加"标记(marker)",以便用户在一个文件内进行自定义的"标记跳转".
添加/删除标记: Ctrl+M 或者在行前点击鼠标左键
跳转到文件内的上一个标记: Ctrl+,
跳转到文件内的下一个标记: Ctrl+.
关闭文件时,标记会被自动删除.
Geany还有很多插件,我这个回答就不一一赘述了.
Geany也能很好地配合很多外部工具工作,比如GeanyCtags就调用了外部的ctags命令,在多个文件中查找就调用了grep命令,HTML/XML格式化可以调用tidy命令.
位置1: 菜单-生成-设置生成命令-自定义命令(输出结果到信息窗口)
位置2: 右键-格式-发送选中的文字到-自定义命令(返回处理后的结果)
用户还可以配置很多自己的命令,比如配置给PHP文件的几个生成命令:
语法检查 php -l
静态分析 phpstan
代码风格 psr
相应地,用户也可以给Python文件配置对应的生成命令.
值得一提的是,假如你开发了一门新的编程语言,比如名字叫做"RedStar",后缀名是"rs",那你只要参考其他语言的filetypes,给Geany提供一个文件定义配置"filetypes.rs",Geany就能为你的这个新语言提供跟其他语言一样的语法高亮和符号提示等支持.
因为Geany基于C和GTK3开发,所以Linux上内存占用远比基于Java的PyCharm和基于Electron(Chromium)的VSCode要小.
总而言之,Geany不是一个弱鸡编辑器,不要被Geany朴素的外表欺骗,写Python这个教程的老外,推荐Geany是有理由的.深入使用过Geany后就知道,这是个具有良好生产力的开发者工具.