goland 不提供按代码类型(如 go/json/markdown)实时过滤文件列表的内置开关,但可通过 todo 过滤器(路径匹配 **/*.go)、项目视图“按文件类型分组”、结构化搜索(限定 *.go 文件范围)或“find in path”文件掩码等方式实现近似效果。

GoLand 本身不提供“按代码类型(如 Go / JSON / Markdown)过滤文件列表”的内置文件浏览器筛选器,但可以通过 TODO 过滤器 + 自定义模式、结构化搜索、或结合项目视图的“文件类型”分组实现近似效果。真正在项目窗口里按扩展名快速聚焦,靠的是手动配置和快捷键组合,不是点一下就出结果的开关。
用 TODO 过滤器伪装成“按类型筛选”
GoLand 的 TODO 工具窗口(Ctrl+Alt+0+S → TODO → 添加/编辑过滤器)虽为标记服务设计,但能被“借用来筛文件”:它支持按文件路径匹配模式,比如只显示 .go 文件中的 TODO 条目,实际就等效于列出了所有含 TODO 的 Go 文件。
- 新建过滤器时,“名称”填
Go files only,“模式”选File path,值填**/*.go - 注意:
**/*.go是通配符语法,**表示任意深度子目录,*匹配文件名主体 - 该方式不显示无 TODO 的
.go文件,所以不能替代真正的文件浏览;但它适合“我要快速定位所有 Go 源码里带标记的地方”这类场景 - 若想看全部
.go文件(不管有没有 TODO),这个方法就不适用
在项目视图中按文件类型分组查看
GoLand 的 项目 工具窗口(Alt+1)默认按目录结构展示,但可切换为“按文件类型”分组——这不等于“过滤”,但能让你一眼扫到所有 .go、.mod、.md 文件聚在一起。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 点击项目视图右上角齿轮图标 →
视图选项→ 勾选按文件类型分组 - 此时文件不再按路径嵌套排列,而是变成类似
Go Files、Configuration Files、Markdown Files等折叠节点 - 每个节点展开后只包含对应类型的文件(基于注册的文件类型识别,非后缀硬匹配)
- 缺点:无法自定义类型分组逻辑;某些后缀(如
.yml)可能归入Text Files而非Configuration Files,取决于语言插件是否注册了该后缀
用结构化搜索定位特定类型中的代码片段
当你真正关心的是“某种类型文件里的某类代码”,比如“所有 .go 文件中调用了 http.HandleFunc 的地方”,这时 结构化搜索(Ctrl+Shift+A → 输入 Structural Search)比单纯列文件更有用。
- 模板可限定语言为
Go,再写表达式如http.HandleFunc($path$, $handler$) - 搜索范围可设为
Scope→Custom→Files matching pattern: *.go - 这绕开了“先找文件再查内容”的两步操作,直接命中目标上下文
- 注意:结构化搜索依赖 AST 解析,对语法错误的文件可能跳过,不保证 100% 覆盖
没有“实时过滤文件列表”的快捷入口
别指望在项目窗口顶部找到一个输入框,敲 .go 就只剩 Go 文件——GoLand 没这个功能。你看到的 搜索框(Ctrl+Shift+F)是全局文本搜索,双击 Shift 弹出的“搜索 everywhere”也只搜文件名/类名/设置项,不支持后缀过滤。
- 最接近的替代是:在项目视图中右键文件夹 →
Find in Path...→ 切换到File mask栏,填*.go,但这只是搜索,不改变视图结构 - 如果硬要“只看 .go 文件”,目前唯一可靠做法是:用系统终端进项目目录,执行
find . -name "*.go" | head -20快速预览,再回 GoLand 双击打开 - 插件市场也没有成熟方案补全此缺口;已有插件多聚焦于代码分析而非 UI 层过滤
真正容易被忽略的一点:GoLand 对文件类型的识别依赖 Settings → Editor → File Types 里的注册规则。如果你发现某个自定义后缀(如 .api)没被归入预期分组,不是过滤失效,而是它根本没被识别为 Go 或任何语言——得先去那里手动关联后缀和文件类型。










