Vim – ファイル内を正規表現で一括で置換する方法【文字/数字/改行/空白】

midSun31midSun31
IT・デジタル

文字列の様々なパターンを簡潔に表現できる「正規表現」は、プログラミングにおいても検索や置換どのテキスト編集においても非常に便利な機能です。

Vimでも正規表現を使って、ファイル内のテキストを置換することができます。

この記事では、Vimで文字や数字、改行、空白といった様々なパターンの場合に正規表現で一括置換する方法をご紹介します。

「文字」を正規表現で置換する方法

文字を正規表現で置換する場合、よく使われるのは次のようなパターンです。

ワイルドカードを使う

「hoge??huga」のように特定の文字列以外は任意の文字でマッチングさせたいケースは、次のように指定します。

:%s/hoge.*huga/置換後文字列/g

「.」で任意の一文字を、「*」で0回以上の繰り返しを表現します。

使用例

次のサンプルでは「Em?View」のパターンを「somthing」に置換するコマンドです。

:%s/Em.*View/somthing/g

上記の例では、「*」は最長マッチなので、行内で最後の「View」が置換対象となっています。

マッチした最も短い文字列を置換したい場合は、最短マッチの「\{-}」を使用します。

:%s/Em.\{-}View/somthing/g

上記のコマンドで入力すると置換対象は次のようになります。

OR関係にある文字列

複数の文字列をOR条件で置換したい場合は、次のように指定します。

:%s/\(文字列1\|文字列2\)/置換後文字列/g
:%s/\v(文字列1|文字列2)/置換後文字列/g #very magicの場合

「|」を用いて「(パターン1|パターン2)」と記述します。「()」「|」のメタ文字は、「\」でエスケープする必要があります。

メタ文字のエスケープが手間な場合は、「\v」を指定してvery magicを使います。

使用例

「ListView」または「DetailView」を「something」に置換したいケースの場合は、次のように指定します。

:%s/\(List\|Detail\)View/something/g
:%s/\v(List|Detail)/View/g #very magicの場合

上記のコマンドで置換対象を、「ListView」と「DetailView」にすることができます。

文字の正規表現による置換は様々なバリエーションがあります。他のパターンの置換を行いたい場合は公式のヘルプを参照するとよいでしょう。

「数字」を正規表現で置換する方法

数字を正規表現で表すには「\d」を利用します。半角数字である0~9にマッチさせることができます。

:%s/\d/置換後文字列/g

「改行」を正規表現で置換する方法

改行を正規表現で表すには「\n」を利用して次のように指定します。

:%s/\n/置換後文字列/g

マッチする改行コードの種類(CRLFやLFなど)は、ファイルフォーマットに依存します。

「空白」を正規表現で置換する方法

スペースのみを置換する

スペースのみを置換したい場合は、正規表現は必要なく、置換前の文字列としてそのまま半角スペース「 」を入れればOKです。

:%s/ /置換後文字列/g

全角スペースの場合も同様です。

半角スペースとタブを置換する

タブも置換対象とする場合は空白を表す正規表現「\s」を利用します。タブのみの場合は「\t」です。

:%s/\s/置換後文字列/g

以上、ファイル内の文字を正規表現で一括置換する様々なパターンでした。

IT・デジタル
Howpon[ハウポン]

コメント