我需要编辑模型的 gcode,特别是我必须从所有 Z 坐标中减去数字 87。以下是 gcode 的示例:
;LAYER:435
G0 F9000 X-38.420 Y-26.887 Z87.300
;TYPE:WALL-INNER
G1 F1800 X-37.709 Y-27.459 E1386.91774
G1 X-37.020 Y-28.062 E1386.94819
G1 X-36.404 Y-28.635 E1386.97618
从上一个样本来看,有 Z87.300 ,我需要将其更改为 Z0.300 并对整个 Z 执行此操作。我在 vim 中尝试了以下命令:
:%s/Z\(\d\d\)/\="Z".submatch(1)-87/
但它的行为是错误的。
答案1
Vim 从左到右评估您的表达式,因此它首先将“Z”和匹配项连接起来,然后从字符串中减去 87(得到 0)。可以使用括号修复此问题:
:%s/Z\(\d\d\)/\="Z".(submatch(1)-87)/
为了更明确(并处理以 开头的十进制数0
),您可以加入str2nr()
,如下所示:
:%s/Z\(\d\d\)/\="Z".(str2nr(submatch(1))-87)/