This function has inconsistent whitespace. Also, `$0 $1 $2 $3`? And why use `replace` and not `match`? I like the functionality this adds, but this function is a mess.