For the specific example you cite, clicking a link on a lookup column (presumably from a list view) and having that redirect to the edit form for the lookup item instead of the display form, I would think using Client Side Rendering to rewrite the link URL for the lookup field would be appropriate.
With a little research you can see that links to the display form look like
/_layouts/15/listform.aspx?PageType=4&ListId={list GUID}
and links to the edit form look like
/_layouts/15/listform.aspx?PageType=6&ListId={list GUID}
So really the only difference is the PageType
.
Knowing that, your field override could look something like this:
function LookupFieldOverride (ctx) {
// first let SharePoint render the default HTML for the lookup link
// so you get the correct syntax and List ID, etc.
var renderer = new LookupFieldRenderer(ctx.CurrentFieldSchema.Name);
var html = renderer.RenderField(ctx, ctx.CurrentFieldSchema, ctx.CurrentItem, ctx.CurrentListSchema);
// then just replace the part of the URL that points to the display form
// and make it point to the edit form instead
var newHtml = html.replace(/PageType=4/g, 'PageType=6');
return newHtml;
}