snap one object to another, but rather than the centroid of the moving object being used, instead the nearest vertex to the mouse cursor at the time of pressing G is used as the moving object’s snapping point.
If normal snapping is enabled, this could be calculated from the vertex normal, or from the vertex to the centroid.