2016-11-16 5 views
-1

私は1つの範囲の行と2つの範囲の行を1つのコマンドで検索/置換しようとしています。vimの複数の範囲を検索して置き換えます

:2,10s/\n/ /g | 12,18&&

それはちょうど私に与えます:

Find and replace strings in vim on multiple linesは、私はこのようにそれを行うことができるはずと言い 9最初の範囲での1行上の置換基(予想通り)、およびをE16:無効な範囲秒です。

なぜ2番目の範囲は機能しませんか?同じ結果に

:2,10s/\n/ /g | :12,18&&

は、私はまた、次のようなコマンドを試してみました。

答えて

0

ハハ...いいです、最初の範囲のスペースで改行を置き換えると、12-18行目が3-9のように変わるので、2番目の範囲は存在しません。ソリューションは、それ以降のファイル内の範囲は、コマンドで最初に来るように、範囲を反転することである:範囲を反転

:12,18s/\n/ /g | 2,10&&

0

は別のアプローチは、その後の範囲についてマークを設定することであろう、ここに便利です。 Vimは追加/削除のために自動的に適応します:

:12mark a | 18mark b | 2,10s/\n/ /g | 'a,'b&& 

一般に、このようなシーケンスは避けるのが最善です。しばしば、単一の:globalコマンドがあなたのために反復を行うことができます(これには自動改行もあります)。

関連する問題