You can define a custom axis from a face with ctrl+alt+space, but sometimes even that's not good enough because some edges are sheared which offsets the x and y directions.
What would be helpful is if instead, I could simply click on an edge, and define a transformation axis with a x, y or z that runs perfectly in the direction of the two vertices of the edge I selected. Does blender have such an option?