1

Vim バッファーを対話的に編集する場合、できれば空でない行から末尾の空白を削除せずに、複数の空行 (真に空であるか、オプションの空白を含む) の各シーケンスを単一の置換コマンドを介して単一の空行に置き換えるにはどうすればよいですか? ...?

当然のことながら、このような複数の「空の」行のブロックは、バッファーの最初と最後を含むバッファー内のどこにでも存在する可能性があります。

私は、Vim が正規表現を処理する方法の誤解の原因を追跡することにのみ関心があるため、何らかの形の繰り返し (Vim の ":global" コマンド、マクロ、関数など) を含む解決策は次のとおりです。私が探しているものではありません。


タイプミスを修正する必要があるので、CTRL-H を使用して修正しようとします.. 奇妙なことが起こります :-) そして、Enter キーを押して次の行に移動すると、入力したものがすべて投稿され、修正する必要があります。編集ボタンを使用して内容を追加します。@kev:非常に興味深い解決策であり、多くの質問があります..しかし、あなたの投稿に返信することさえできません..私の「評判」が十分ではないことがわかりました..それを変える方法..!通常のメーリング リストを介してこのフォーラムを使用する方法はないと思います..? -176 文字が残っていることに気付きました..したがって、最初の努力は切り捨てられました..ああ、まあ..

4

2 に答える 2

3

複数行のパターンを使用できます。

:%s/^\_s*$//

\_sスペースに一致(改行を含む)

于 2012-07-19T23:34:09.920 に答える
0

@xev ..あなたは質問に答えていません。あなたの代替コマンドは空の行を探し、それらを に置き換えます//。つまり、何も置き換えません!

行を折りたたむのではなく、行を削除しています。

これが当てはまらないと思われる場合は//、代わりのコマンドの を、たとえばダッシュの文字列に変更してください。

:%s/^\_s*$/----------/

すべての空の行が 10 個のダッシュに置き換えられることに注意してください。

バグのある古いバージョンの Vim を実行している可能性がありますか?

そうでない場合は、どのように機能すると思われるかを説明してください。

于 2012-07-23T20:25:56.860 に答える