代码编辑器
中央编辑区支持多标签页,根据打开的节点类型自动选择对应编辑器:
| 节点 | 使用的编辑器 |
|---|---|
| SCL 程序块 | 结构化控制语言编辑器(关键字高亮、智能补全) |
| LAD 程序块 | 梯形图编辑器(拖拽触点/线圈) |
| CFC 程序块 | 连续功能图编辑器(拖拽框/针脚连线) |
| 数据块 | 表格编辑器 |
| HMI 页面 | HMI 设计器(拖拽控件) |
| 监控表 | 监控表格 |

多标签页
- 打开多个文件:双击多个节点,每个打开为一个标签
- 切换标签:点标签头 / Ctrl+Tab
- 关闭标签:点标签 × / Ctrl+W
- 分屏:拖动标签头到编辑区边缘,实现左右/上下分屏
常用快捷键
| 操作 | 快捷键 |
|---|---|
| 保存当前 | Ctrl+S |
| 保存全部 | Ctrl+Shift+S |
| 搜索 | Ctrl+F |
| 替换 | Ctrl+H |
| 全局搜索 | Ctrl+Shift+F |
| 撤销 / 重做 | Ctrl+Z / Ctrl+Y |
| 跳到变量定义 | F12 |
| 查找所有引用 | Shift+F12 |
| 注释切换 | Ctrl+/ |
| 代码格式化 | Ctrl+K → Ctrl+D |
智能补全
- 输入变量名前几个字母时,自动弹出候选
- 输入
.后自动显示成员变量/方法 - 输入函数名 +
(自动显示参数提示 - Ctrl+空格 手动呼出补全
代码保护
对于敏感程序块,可通过右键 → 设置代码保护,设置密码后其他人无法查看源码(仅能调用)。
语法高亮
SCL 编辑器按类别着色, 默认配色和 VS Code Dark+ 接近:
| 类别 | 示例 | 颜色 |
|---|---|---|
| 关键字 | IF / FOR / VAR / END_IF | 蓝色粗体 |
| 内置类型 | BOOL / INT / REAL / DT | 绿色 |
| 数字 | 100 / 3.14 / 16#FF | 橙色 |
| 字符串 | 'Hello' / "World" | 红色 |
| 注释 | (* ... *) / // ... | 灰色斜体 |
| 地址 | %MW100 / %IX0.0 | 紫色 |
| 函数调用 | TON(...) / MC_MoveAbsolute(...) | 黄色 |
| 用户变量 | MyVar | 默认色 |
深色主题、浅色主题、蓝色主题各有一套配色, 设置 → 外观 → 编辑器颜色 可以自定义每一类的颜色。
自动补全
IDE 在输入时自动弹出候选:
| 触发时机 | 候选内容 |
|---|---|
| 输入 3 个字符 | 同名变量、函数、类型 |
输入 . | 结构体成员、FB 实例成员 |
输入 ( | 函数参数提示 |
输入 % | 地址补全 (Q/I/M + 宽度) |
| Ctrl+空格 | 手动呼出, 列出全部候选 |
候选列表右侧显示文档工具提示, 包含:
- 完整签名 (返回值 / 参数 / 参数类型)
- 注释 (来自变量表或程序块头注释)
- 出处 (当前项目 / 引用库 / 标准库)
- 快速示例代码片段
按 Tab 或 Enter 接受候选, Esc 取消, 方向键选择。
代码折叠
大块代码可以折叠起来, 减少视觉噪音:
| 折叠类型 | 触发 |
|---|---|
| VAR ... END_VAR 声明段 | 自动识别 |
| IF ... END_IF | 自动识别 |
| FOR / WHILE 循环 | 自动识别 |
| CASE 分支 | 自动识别 |
| 注释块 | 多行注释合并 |
自定义 #region | 用 (*#region 名称*) ... (*#endregion*) 手工划分 |
左侧行号栏出现 - / + 按钮, 点击折叠/展开。Ctrl+K → Ctrl+0 全部折叠, Ctrl+K → Ctrl+J 全部展开。
书签
| 操作 | 快捷键 |
|---|---|
| 切换当前行书签 | Ctrl+K → Ctrl+K |
| 下一书签 | Ctrl+K → Ctrl+N |
| 上一书签 | Ctrl+K → Ctrl+P |
| 清除所有书签 | Ctrl+K → Ctrl+L |
书签列表在"书签"面板 (视图 → 面板 → 书签) 里集中查看, 双击跳转。书签会随项目一起保存。
多光标编辑
与现代编辑器一致:
- Alt + 点击: 在点击位置添加一个光标
- Ctrl + Alt + ↑/↓: 在上下相邻行添加光标
- Ctrl + D: 选中光标处的词, 继续按 Ctrl+D 添加下一个相同词为新的光标
- Shift + Alt + 矩形拖拽: 矩形块选择, 在矩形每一行末尾放一个光标
适合对列对齐的变量名/地址做批量修改。
搜索与替换
当前文件
- Ctrl+F: 打开查找条, 输入文本, Enter 跳下一个, Shift+Enter 跳上一个
- Ctrl+H: 切换到替换模式
- 勾选: 区分大小写 / 全字匹配 / 正则表达式
全局搜索
- Ctrl+Shift+F: 打开全局搜索面板
- 支持过滤: 按文件类型 (SCL / LAD / XML), 按项目/库, 按节点类型
- 搜索结果按文件分组, 双击跳转, 右键 → 全部替换
地址搜索
输入 %MW100 这样的 IEC 地址, 能同时:
- 在变量表中查到该地址对应的符号
- 在所有程序中列出使用该地址的位置
- 高亮冲突 (如果多个符号映射到同一地址)
跳转导航
| 操作 | 快捷键 | 目标 |
|---|---|---|
| 跳到定义 | F12 | 变量/函数/类型的声明处 |
| 查找所有引用 | Shift+F12 | 所有用到该符号的位置 |
| 查看实现 | Ctrl+F12 | FB 或 Interface 的实现 |
| 回退上一位置 | Alt+← | 最近一次跳转起点 |
| 前进 | Alt+→ | 与上一条配对 |
| 转到行 | Ctrl+G | 输入行号 |
| 快速打开 | Ctrl+P | 按名称模糊打开程序块 |
| 符号跳转 | Ctrl+T | 按名称跳到类型/函数/FB |
重构
- 重命名: F2 重命名变量 / 函数 / 类型, 自动更新所有引用
- 提取方法: 选中代码段 → 右键 → 提取为 FC/FB
- 内联变量: 对只使用一次的临时变量, 右键 → 内联展开
- 整理命名空间: 自动排序 VAR 段, 合并重复声明
批量替换
场景: 批量把 MW100 改为 MW200, 或把 OldMotor 改为 NewMotor。
- Ctrl+Shift+F 打开全局搜索
- 输入旧名, 勾选 "全字匹配"
- 切换到"替换"模式, 输入新名
- 查看预览列表, 取消不该改的
- 点"全部替换"
重构优先于文本替换
对于有结构的变量名 (如 FB 实例成员), 用 重命名 (F2) 比 Ctrl+H 更安全。F2 基于语义, 不会误伤字符串里同名的内容。
语言间互转
部分程序块支持多种语言视图互转:
| 源语言 | 目标语言 | 限制 |
|---|---|---|
| LAD | CFC | 无损 |
| CFC | LAD | 无损 |
| LAD | SCL | 单向, 可逆性有限 |
| SCL | LAD | 不支持 (SCL 语法太灵活) |
右键程序块 → 打开为... → 选目标语言。新视图独立保存, 两个视图共享同一变量表。

性能提示
- 单个程序块建议 < 1000 行, 超过拆分为多个 FC
- 大项目 (>10 万行) 启动慢时, 关闭 "加载时预编译" 选项
- 在线模式下高频刷新的监视表如果卡顿, 降低刷新频率或减少监视项
排错
| 症状 | 处理 |
|---|---|
| 打字延迟卡顿 | 关闭实时错误检查 (设置 → 编辑器 → 实时诊断) |
| 补全候选不出现 | Ctrl+空格 手动触发; 检查语言服务是否启动 |
| F12 跳不过去 | 确认项目已至少编译过一次 (未编译时无符号表) |
| 粘贴时排版错乱 | 使用 Ctrl+Shift+V 粘贴为纯文本, 再格式化 |
| 中文注释乱码 | 检查文件编码; 设置 → 编辑器 → 默认编码 改为 UTF-8 |