viの正規表現

viでの正規表現

grepの正規表現とほぼ同じ表記です。ただし、viの置換処理を行う際には、特殊文字自体を「\」エスケープする必要があります。


正規表現の記法

使用頻度が高いものを記載しています。

指定 説明
. 任意の一文字にマッチする。
^ 行頭にマッチする。
$ 行末にマッチする。
\< 単語の先頭にマッチする。
\> 単語の末尾 にマッチする。
\n 改行にマッチする。CR改行コードは「\r」です。
\t tab文字にマッチする。
\s 空白文字にマッチする。
[abc] abcのいずれかの一文字にマッチする。
[!abc] abcのいずれでもない一文字にマッチする。
[0-9] 0~9の一文字にマッチする。
[a-z] a~zの一文字にマッチする。
r* 正規表現rの0回以上の繰り返しにマッチ。
r\+ 正規表現rの1回以上の繰り返しにマッチ。
r\{n\} 正規表現rのn回の繰り返しにマッチ。
r1\|r2 正規表現r1又は正規表現r2にマッチ。

正規表現サンプル

文字列の置換について

viでの文字列置換は「:s」コマンドを使用します。


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

文末に「g」をつけると、行中の全ての文字列を置換対象とします。


先頭の空白文字を削除する。

行頭の空白文字(一文字のみ)を削除する場合、以下のコマンドを実行します。


:%s/^\s//

行頭から続く空白文字(一文字以上)を削除する場合、以下のコマンドを実行します。


:%s/^\s¥+//

行末の空白文字を削除する。

行末に続く空白文字(一文字以上)を削除する場合、以下のコマンドを実行します。


:%s/\s*$//

空白のみの行を空白を削除

行頭から行末まで空白文字のみで構成されている行の空白文字を削除します。行は削除しません。


:%s/^\s*$//

改行文字の削除

WindowsOSなどで編集されたファイルをバイナリ表示「vi -bコマンド」すると、「^M」というCR改行コードが表示されることがあります。CR+LF改行コードをLF改行コードに変換するには、以下のコマンドを実行します。

「^M」の入力は「Ctrl + v + m」です。


:%s/^M//

HTMLタグの除去

ファイルの文中から全てのHTMLタグを取り除きます。


:%s/<.\{-}>//g

関連ページ