Vim 検索と置換 - 正規表現

Vim 検索と置換 - 正規表現

検索と置換を実行したい。数字以外の文字の前の改行はタブに置き換えられる。試してみた

%s/\n\D/\t/g

しかし、それは改行後の単語の最初の文字を置き換えてしまいました。これは私が望んでいたものではありません。

abcd
abcd

abcd   bcd

a改行後も保存したい。

答え1

ほぼ完了ですが、正規表現では改行と改行の両方が置き換えられます。そして数字以外の文字はタブで入力します。

数字以外の文字が続く改行をすべてタブに置き換えるとどうでしょうかそして同じ非数字?

%s/\n\(\D\)/\t\1/g

エスケープは少し面倒ですが、基本的には の周囲にグループ化があり\D、数字以外の文字をキャプチャします。次に、これを で参照して、\1タブの後に挿入します。

答え2

これを行う 1 つの方法は、終了一致マーカーを使用することです。

%s/\n\ze\D/\t/

別の方法としては、否定先読みを使うことです。

%s/\n\d\@!/\t/

これらは完全に同等というわけではありません。2 番目のものはファイル内の最後の改行も置き換えます。

答え3

これがお役に立てば幸いです

:%s#\n.\D#\t#g

関連情報