範囲を指定して、「!」でコマンドラインのコマンドを呼び出すと、
その指定した範囲の行が置きかえられてしまうでしょう?

 :51,58!sort

この範囲指定のコマンドの実行を、現状のテキストを置き換えないで実行して
結果を取りたいのですよ。
で、なにか簡単にできる方法ってあったりしますか?

ちなみに今はこんなふうにしてます。
 :51,58w temp.txt
 :!sort temp.txt