I use gedit on the Linux box that runs PathPilot.
Note that PathPilot supports the full LinuxCNC language, which lets you declare and use variables right in the code.
See for example:
G Code Overview
Code:
#<Xstart> = 1.0
#<Ystart> = 2.0
#<Zend> = -0.5
#<Xdelta> = 0.5
#<Ydelta> = 0.3
M03 S3000
G0 X[#<Xstart>] Y[#<Ystart>] Z1.0
G0 Z0.1
G1 [#<Zend>] F150
G0 Z1.0
G0 X[#<Xstart>+#<Xdelta>] Y[#<Ystart>] Z1.0
G0 Z0.1
G1 [#<Zend>] F150
G0 Z1.0
G0 X[#<Xstart>+#<Xdelta>] Y[#<Ystart>+#<Ydelta>] Z1.0
G0 Z0.1
G1 [#<Zend>] F150
G0 Z1.0
G0 X[#<Xstart>] Y[#<Ystart>+#<Ydelta>] Z1.0
G0 Z0.1
G1 [#<Zend>] F150
G0 Z1.0
M30
G30
(This is untested, but should illustrate the principle I think.)