gcode
Sublime Text编辑器的gcode(g代码)语法高亮;用于查看或编辑CNC或3D打印机gcode文件非常有用
详细信息
安装
- 总数 10K
- Win 6K
- Mac 3K
- Linux 1K
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 2 | 1 | 0 | 0 | 1 | 3 | 0 | 1 | 3 | 0 | 2 | 1 | 0 | 1 | 0 | 3 | 1 | 2 | 2 | 1 | 0 | 1 | 0 | 2 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
Mac | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 2 | 1 | 1 | 2 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
阅读我
Gabriele Staples
目录
(点击展开)
sublime_gcode
状态:完成!它工作了!
这是将此软件包添加到Sublime Package Control的PR:https://github.com/wbond/package_control_channel/pull/8501。
这是Package Control网站上的此软件包:https://packagecontrol.sublime.net.cn/packages/gcode。截至2022年4月7日发布到Package Control,该软件包的实际下载量实际上都是针对此软件包所替代的旧软件包,名为gcode-syntax-highlighting,由@themachinist编写。该旧软件包的实际下载量(在Package Control网站上的上面悬停数字以查看它们):1. 总计:8453 2. Windows:5113 3. Mac:2107 4. Linux:1233
因此,仅超过这些计数的数字才是此存储库提供的新gcode
软件包的下载次数。
描述
gcode
(g-code)语法高亮显示,适用于Sublime Text编辑器;非常适合查看或编辑数控或3D打印机gcode文件,例如来自Ultimaker Cura切片器,PrusaSlicer,或Slic3r等的文件。
Sublime Text 4的截图,显示颜色方案Monokai
和gcode
语法高亮显示
G代码格式、“风味”和标准
该工具应能够处理和突出显示各种gcode格式和样式,包括以下内容。如果您遇到任何问题,请截图显示的语法高亮,提交一个新的问题,粘贴截图和一大段gcode以便我进行操作和测试,以及与此种gcode语法相关的任何文档链接,并说明您期望看到的格式或突出显示方式。以下列表的主要参考是:https://en.wikipedia.org/wiki/G-code。
标准
- RS-274
- ISO 6983
- DIN 66025
- PN-73M-55256 和 PN-93/M-55251
G代码“风味”
(如Cura 3D打印机切片器软件)中的机器设置下拉菜单所示)
- Marlin
- Marlin(容积式)
- RepRap
- Ultimaker 2
- Griffin
- Makerbot
- Bits from Bytes
- Mach3
- Repetier
受这两个项目的启发
- gcode-syntax-highlighting,由@themachinist创建。
- 它的分支:https://github.com/ElectricRCAircraftGuy/gcode-syntax-highlighting
- 在我项目中,
gcode
语法受@themachinist上述工作的强烈影响。我使用他的作品作为例子和起点,编写并修改了正则表达式match
模式和相关scope
。然而,由于我的工作与他的显著不同,我决定从头开始构建我的仓库,而不是成为他仓库的分支。
- 这里是由@digex提供的zip文件版本。
- 在此处找到完整安装说明和说明。
- 在我项目中,
gcode-alternate
语法是@digex在上述zip文件中的工作的完全复制品。
安装
1. 软件包控制
通过工具
->命令面板...
或按Ctrl + Shift + P打开命令面板。然后,搜索“安装包”,点击“Package Control: 安装包”。搜索“gcode”,以该名称安装包。gcode
现在可作为语法高亮显示选项之一使用。
如果您想移除它,请按Ctrl + Shift + P,然后搜索“Package Control: 移除包”。选择它,然后搜索“gcode”。
要列出所有已安装的包,请按Ctrl + Shift + P,然后输入“Package Control: 列出包”。
2. 手动安装
在Sublime Text中,通过点击首选项
–> 浏览包...
找到您的包
文件夹的路径。这将打开您的GUI文件管理器到Sublime Text包存储的位置。在我使用的Linux Ubuntu 20.04中,这是/home/gabriel/.config/sublime-text-3/Packages
(即使我正在运行Sublime Text 4)。
现在,将此包提取到该文件夹。
选项1:图形界面方式:点击上面的绿色“代码”按钮 –> “下载ZIP” –> 保存zip文件,将其提取到上面的包
路径,并重命名为gcode
。
或者选项2[我更喜欢的做法]:命令行方式:
# --------------
# Option 2.A: clone the repo directly into your "Packages" dir
# --------------
# cd to the Packages dir (change this path according to your Packages path above)
cd "$HOME/.config/sublime-text-3/Packages"
# clone the repo
git clone https://github.com/ElectricRCAircraftGuy/sublime_gcode.git
# rename the repo dir to "gcode"
mv sublime_gcode gcode
# --------------
# OR Option 2.B [what I prefer]: clone the repo into wherever you want, and then
# symlink it into your "Packages" dir
# --------------
# clone repo into ~/dev
mkdir -p ~/dev
cd ~/dev
git clone https://github.com/ElectricRCAircraftGuy/sublime_gcode.git
# now symlink it into your Packages dir
ln -si ~/dev/sublime_gcode ~/.config/sublime-text-3/Packages/gcode
就是这样!现在,gcode
条目已在您的语法高亮菜单中即时可用。
问题
如果主 gcode
语法高亮工具有任何问题或不符合预期,请在此GitHub仓库中创建一个问题,我会处理它。包括应该高亮但未高亮的部分、缺失的gcode文件扩展名等。
开发者笔记和软件包开发教程
如果您是普通用户,可以直接在这里停止。以下笔记是为了我自己,以及想学习如何制作新的Sublime Text扩展包(包括语法高亮包)或其他开发者,或者是想编辑此或其他包的语法高亮效果,或想学习如何为这个仓库做贡献的人。
在Linux Ubuntu 20.04上,在Sublime Text 4(构建号4126)中进行了测试。
参考
- 大量自己的独立测试和试验
- https://zh.wikipedia.org/wiki/G-code
.tmLanguage
和.YAML-tmLanguage
文件似乎是用于指定语法高亮规则的某些通用类似TextMate的语言语法文件。- Marlin g-code(用于3D打印机)官方参考页面:https://marlinfw.org/meta/gcode/
- Sublime Text页面
- 语法定义:https://text.sublime.net.cn/docs/syntax.html - 解释了如何构建和操作
.sublime-syntax
文件。
- 语法定义:https://text.sublime.net.cn/docs/syntax.html - 解释了如何构建和操作
- Package Control
- *****TextMate语言语法文档:https://macromates.com/manual/en/language_grammars;例如
support.variable
,comment.line
,markup.bold
,support.function
等。
- http://ilkinulas.github.io/programming/2016/02/05/sublime-text-syntax-highlighting.html - 展示了如何通过使用您的范围名称和格式编辑Monokai.tmTheme来修改自定义语法高亮范围的自定义格式。
- https://github.com/va9iff/SublimeNotePad - 极简单的Sublime Text包插件示例,其中包含Python代码与Sublime Text GUI和菜单交互!查看其被添加到Package Control的请求:https://github.com/wbond/package_control_channel/pull/8481。
- *****Sublime Text中语法高亮器的名称空间(我对它的评论):https://github.com/wbond/package_control_channel/pull/8454#issuecomment-1073181257
- 查看@digex在这里提供关于gcode语法高亮的全套安装说明和笔记。
- https://regex101.com/ - 使用此工具构建、检查和测试您的正则表达式,用作语法高亮匹配模式。
Sublime Text软件包和语法高亮–它是如何工作的
1. Sublime Text软件包
Sublime Text Packages
文件夹中的任何文件夹(可通过首选项
–> 浏览包...
找到)都由Sublime Text自动即时加载为“包”。
包通过Package Control
包安装的,但是有两种类型:1. 打包的:Package Control 安装的绝大多数包都被压缩成一个名为packageName.sublime-package
的压缩文件,位于与Packages
目录同一级的Installed Packages
目录中。1. 如果你手动在Packages
目录内创建一个命名为packageName
的目录(以匹配上面的打包文件),那么其中同名文件将覆盖打包包中的文件。详见“覆盖”部分:[这里](https://packagecontrol.sublime.net.cn/docs/customizing_packages)。1. 未打包的:所有安装到Packages
目录的包都将被解包。1. 开发者可以通过在他们的仓库根目录放置一个名为.no-sublime-package
的文件来让Package Control解包通过Package Control安装的包。详见[这里](https://packagecontrol.sublime.net.cn/docs/submitting_a_package)。1. 如果包中包含需要由系统运行的二进制可执行文件,则需要使用未打包的包,例如它们显然无法从压缩的ZIP文件中运行。
2. 语法高亮
语法高亮包必须包含一个XML格式的*.tmLanguage
文本高亮定义文件,或者一个YAML格式的*.sublime-syntax
文件。我的个人测试显示,如果你在两个文件中指定了相同的语法高亮name
值,那么*.sublime-syntax
文件具有优先级,并且是Sublime Text使用的。请注意,Textmate文件也有名为*.YAML-tmLanguage
的YAML格式版本,但据我测试,这个文件对Sublime Text没有作用,并且不被Sublime Text识别。
注意,*.tmLanguage
或*.sublime-syntax
文件的名称并不重要!重要的是该文件内部的name
字段!所以,如果你有一个名为whatever.sublime-syntax
的文件,并且它包含一个设置为gcode
的name
字段,那么你将在语法高亮选择菜单中看到gcode
。
要让Sublime Text自动将Textmate的.tmLanguage
文件转换为.sublime-syntax
文件,请在Sublime Text中打开.tmLanguage
文件,然后转到工具
–> 开发者
–> “从*.tmLanguage...新建语法”
。将创建一个名为*.sublime-syntax
的文件并在Sublime Text中打开,但你必须手动选择保存位置才能保留它。然而,这种自动转换并不总是有效,我无法确定为什么有时不起作用。你也可以转到工具
–> 开发者
–> “新建语法...”
来创建一个通用的.sublime-syntax
文件示例。
我建议你使用.sublime-syntax
文件来指定语法高亮。你可以在这里读取关于它们的官方Sublime Text文档:[这里](https://text.sublime.net.cn/docs/syntax.html)。
一个软件包中有多个语法高亮定义
如果一个包只包含一个语法高亮定义文件(文件格式为*.tmLanguage
或*.sublime-syntax
),则该文件内的name
值将显示在你的语法高亮菜单中(再次强调,文件名本身并不重要)。但是,如果你在同一个包中放置多个语法高亮定义文件,则语法高亮菜单将显示包目录名称在菜单中,右侧有一个小黑箭头,当鼠标悬停在此菜单项上时,它会展开以显示包中每个文件的name
字段值。例如:此菜单项将由名为Markdown
的包目录生成,包含两个语法高亮定义文件,其一将name
字段设置为Markdown
,另一个设置为MultiMarkdown
。
要临时禁用语法高亮定义文件,只需将其重命名,使其不再有 .tmLanguage
或 .sublime-syntax
扩展名。我喜欢直接在末尾添加 .disabled
,以清楚地表明我在做什么。例如,将 whatever.sublime-syntax
重命名为 whatever.sublime-syntax.disabled
。
_作用域
–> 色彩方案映射:_如何将语法高亮作用域
值映射到实际的语法高亮颜色和格式?
.sublime-syntax
文件中的最高级 scope
条目可以是您想要的内容。这似乎与格式或颜色映射没有关系。因此,下面的 gcode
可以是任何内容。
然而,与 match
正则表达式相关联的 scope
条目非常重要!它们必须与您颜色主题的条目相匹配!
考虑这个 example.sublime-syntax
文件
%YAML 1.2
---
# https://text.sublime.net.cn/docs/syntax.html
# GS: https://macromates.com/manual/en/language_grammars
name: gcode
file_extensions:
- eia
- nc
- ngc
- prg
- mpf
- gcode
scope: source.iso6983
contexts:
main:
- match: G\d+
comment: g commands
scope: support.function
- match: M\d+
comment: m commands
scope: support.constant
gcode
的 name
条目可以是任何内容。但是,support.constant
的作用域名称必须与您的颜色方案文件中的 scope
条目相匹配,以便它能够接受任何格式。
在 Sublime Text 中,转到 Preferences
–> Customize Color Scheme
,以查看您的颜色主题。我的设置为 Monokai
,因此它打开 Sublime Text 颜色方案 JSON 文件
左侧包含所有默认定义和值。您无法编辑此部分。右侧包含您的自定义覆盖和添加。您可以编辑这部分。在左侧,您可以看到我已经搜索了 support.constant
,并且它被设置为 "var(blue)"
颜色。颜色在 JSON 文件顶部定义在 variables
列表中,如下所示:"blue": "hsl(190, 81%, 67%)",
。因此,上述语法定义文件表明,如果源文件中的任何字符串匹配正则表达式 M\d+
,则它将被分配 support.constant
的作用域名,并且我的 Monokai 颜色方案有一个 support.constant
的定义,它的前景为蓝色!这就是这种映射是如何工作的!
scope
层次结构
如果我的颜色方案 JSON 文件中没有 support.constant
的 scope
条目,那么它将向上提升一个作用域命名空间级别,并查找 support
的条目。如果存在 support
作用域条目,那么我的 support.constant
将从 support
作用域接收格式。如果没有 support
作用域条目,那么分配给 support.constant
的文本将不应用任何特殊格式。<如果发生这种情况,则可以1.更改语法高亮定义文件中的 scope
名称,或2.在 Preferences
–> Customize Color Scheme
中的颜色方案的右侧添加条目。
为您的语法定义文件选择 scope
名称
TextMate 在他们的手册中描述了推荐的 scope
命名约定,在以下部分 “12.4 Naming Conventions” 中:[https://macromates.com/manual/en/language_grammars](https://macromates.com/manual/en/language_grammars)。子项目应以点 (.
) 进行作用域,因此在文档中看到如下内容时
- 注释
- 行
- 块
...
- 它意味着您可以有
comment
、comment.line
或comment.block
等作用域名称。对于support
作用域,您将看到
- 支持
- 函数
- 类
- 类型
常量
等
请参阅以下标题为“选择所需的颜色和格式的作用域”的部分,以获取更多技巧和技术。
添加一个独特的子作用域
在上面的示例中,使用scope
为support.constant
是有效的,因为该作用域在我的颜色方案中有定义。然而,建议您将一个独特的子作用域添加到该作用的末尾!按照惯例,您应该使用整个语法高亮显示定义文件的name
值作为子作用域,因此将在所有作用域的末尾添加.gcode
以使它们独特。这会导致以下更改:support.function
变为support.function.gcode
,support.constant
变为support.constant.gcode
。
这样的好处是,如果愿意,您的语法高亮显示包的使用者和其他包维护者可以定制颜色和格式来影响仅您的包的作用域。他们可以在颜色方案的用户设置中使用此规则覆盖support.constant.gcode
作用域,例如
// Documentation at https://text.sublime.net.cn/docs/color_schemes.html
{
"variables":
{
},
"globals":
{
},
"rules":
[
{
"name": "gcode Library constant",
"scope": "support.constant.gcode",
"foreground": "var(grey)"
}
]
}
但是,如果您没有覆盖此作用域,则没有问题!作用域support.constant.gcode
可能在颜色方案中没有任何匹配的scope
条目,但support.constant
将有,因此将默认的support.constant
格式应用于您的support.constant.gcode
作用域!
有关上述概念的解释和示例的更多信息,请参阅我在此PR上的评论。
要检查源代码文件中特定位置的语法高亮作用域…
为了检查您的语法高亮显示是否正常工作,或者要查看您喜欢的语法高亮显示中的某个颜色和格式的来源范围,请将光标放在要检查的代码上,然后转到工具
–> 开发者
–> 显示作用域名称
。如果您想复制该作用域名称,请点击弹出的源代码上方的小框中的“复制”链接。
选择所需颜色和格式的范围
请首先阅读上面的部分,以了解我在这里所做的一切,以及为什么以及它是如何工作的。
准备好到选择新语法和文件类型所需的颜色和格式(),我喜欢用来找到适当的作用域(即我喜欢并合理的格式)这一技巧是:
- 确保您已在Sublime Text中激活了所需的颜色方案:
首选项
–>选择颜色方案...
–> 选择一个颜色方案。我最喜欢Monokai
,这是Sublime Text 3的默认设置。我仍在Sublime Text 4中使用它。 - 在此颜色方案中打开您非常熟悉的文件类型,例如一个C源文件
.c
。 - 找到您喜欢并且对这项工作合理的颜色和格式。例如,在gcode文件中,
G
和M
命令基本上是函数,所以,在C源文件中,我会找到一个函数调用,例如printf()
,它具有针对G
命令的格式,我将鼠标放在它上面。 转到
工具
–>开发者
–>显示作用域名称
以查看作用域。这是Cprintf()
函数的调用的作用域(而不是定义):“ source.c++ meta.function.c++ meta.block.c++ meta.function-call.c++ support.function.C99.c我关心的只是末尾的作用域,即
support.function.C99.c
。如上所述的“添加独特的子作用域”部分中所述,这里的support.function.C99.c
子作用域部分对我来说并不重要。所以,去掉它们。这留下的是support.function
作用域。通过
首选项
–>自定义颜色方案
打开您的颜色方案,以便搜索颜色方案以确保它存在。在左侧面板中,我搜索support.function
。我发现以下条目:“jsonc { "name": "Library function", "scope": "support.function, support.macro", "foreground": “var(blue)” },Notice the `foreground": "var(blue)"` formatting! That's where this scope for the C `printf()` function gets its formatting! If I like that formatting and want it for `G` commands in `gcode` files, I'll use the `support.function` scope for those `G` commands as well, giving it a unique subscope to ultimately be this scope: `support.function.gcode`.
完成!这是查找和设置所需范围的另一种方法。
更进一步:在C中,函数的定义而不是调用具有此作用域:“source.c++ meta.function.c++ meta.toc-list.full-identifier.c++ entity.name.function.c++”
The scope part I care about is at the far right: `entity.name.function.c++`. Strip off the `.c++` and I get `entity.name.function`. I search for that in the color scheme as described above, and it doesn't exist. _But_, `entity.name` _does_ exist! That means this is the scope which sets the formatting in this case. This entry in the color scheme file for Monokai is: ```jsonc { "name": "Entity name", "scope": "entity.name - (entity.name.filename | entity.name.section | entity.name.tag | entity.name.label)", "foreground": "var(yellow2)" },
entity.name - (...)
部分意味着:“将此格式应用于entity.name
范围及其所有子范围(除了我们在列表中减去的那些)。”您可以看到这些格式将前景
设置为var(yellow2)
。为确保这一点,复制并粘贴此块到右侧窗格,将其更改为var(blue)
,并确保您的函数定义的颜色立即更改。是的,确实变化了!(我刚刚测试过)。这意味着我确实找到了正确的范围!无论如何,如果我需要将此作用域格式用于我看重的我的gcode
语法高亮的其它内容,我将使用作用域entity.name.gcode
作为唯一作用域,映射到此格式!完成时,不要忘记删除您在右侧窗格中刚刚所做的自定义设置。
要在本地上修改和测试对此软件包的更改…
…如果您想更改它或为其做出贡献,请遵循上面所示的“手动安装”说明。如果您已经通过Package Control安装了它,那么您在/home/$USERNAME/.config/sublime-text-3/Packages/gcode
文件夹中的内容将覆盖Package Control安装的/home/$USERNAME/.config/sublime-text-3/Installed Packages/gcode.sublime-package
zip 文件,只要文件夹和文件名相同。
按需修改Packages/gcode
目录中的任何文件。每次您保存,更改都会立即反映在您打开的所有Sublime Text编辑器中。作为快速测试:1. 打开一个gcode文件。1. 将光标移至文件中的某个文本。1. 使用工具
–> 开发者
–> 显示作用域名称
技巧查看该文本的作用域。1. 打开相应的*.sublime-syntax
文件。1. 更改或删除您已找到的相应scope
的match
条目中的正则表达式,使它不再匹配您放置光标的文本。1. 保存*.sublime-syntax
文件,您将立即看到gcode文件中该文本的格式更改。1. 撤销对match
条目的更改并再次保存。格式将恢复到之前的状态。1. 前往首选项
–> 自定义颜色方案
,为该作用域添加一个自定义rules
条目,包含新的格式。保存它,并将看到格式立即再次更改。如果需要,完成时删除该自定义条目。
完成!
现在您和我一样,是Sublime Text包和语法高亮的扎实初学者!😀