viで繰り返し文字の最後のパターンにマッチ

例えば、viで開いたファイルの中にリストアップされている、ファイル名の拡張子の文字だけを削除したい場合、ドットがファイル名にも存在している場合、最後のドット以降だけを認識させたい。

file.name.txt → file.name

そんな時、まず文字列マッチを確認してみると、下記の方法でviの検索で試してみる。

/.[^.]*$

この太文字の意味は、「ドット文字(.) で 次にドット文字を含まない([^.]) 以降どんな文字でもOK(*) で終わる($) 文字」

ドットは特殊文字なので、エスケープを付けて(\.)として、\.[^\.]*$ なのかと思ったが、どっちでもマッチした。◆印にキーとなる文字を書けば良い。◆[^◆]*$

例えば、下記の例:

置換をしてみると、まずは置換コマンドを打って、Enter。

↓置換された(最後のドット以下の文字を削除できた)

今度は最後の3という文字以降を認識させてみると以下のようになる。

UNIX

Posted by 伊藤 輝樹