I routinely use :'<,'>!sort or some similar external filter program on
lines in the file that I'm working with.
I don't think of that as a shell escape the way we seem to be using it. Piping to a sub process is not the same as spawning and interactive subshell.