vimで全角を半角に一括置換


vimで全角を半角にカンタンに一括置換なメモ。
あわせて、半角を全角に一括置換もメモ。

全角と半角がまじってるとイヤ。

例えば、頂いた原稿に全角の英数字と半角の英数字がまじっていることがあったら。

焼酎甲類ビッグマンはリッター400円です。

はがゆい。だいじょーぶっ!vimで一括置換してやるぜ!

注意事項

紹介する置換方法はvimKaoriYa版を使っている場合に限ります。

全角を半角に一括置換する

:%Hankaku

すげぇ、カンタン。でも、、

#実行結果
焼酎甲類ビッグマンはリッター400円です。

全ての文字が半角になるのでカタカナまでもが置換されちゃいます。
そんなときは下記のような方法もある。

全角数字のみを半角にする
:%s/[0-9]\+/\=ToHankaku(submatch(0))/g
全角英字(大文字と小文字)のみを半角にする
:%s/[a-zA-Z]\+/\=ToHankaku(submatch(0))/g
カタカナ以外を半角にする
:%s/[0-9a-zA-Z!?+、。 .]\+/\=ToHankaku(submatch(0))/g

そう、全角から半角があれば、逆もある。


半角を全角に一括置換する

:%Zenkaku
#実行結果
焼酎甲類ビッグマンはリッター400円です。


詳細の設定がしたい場合は、下記のような方法で。

数字のみを全角にする
:%s/[0-9]\+/\=ToZenkaku(submatch(0))/g
英字(大文字と小文字)のみを全角にする。
:%s/[a-zA-z]\+/\=ToZennkaku(submatch(0))/g
カタカナ以外を全角にする
:%s/[0-9a-zA-Z!?+、。 .]\+/\=ToZenkaku(submatch(0))/g

vimで複数ファイルで一括置換

前に書いた記事と組み合わせて応用すれば、複数ファイルの全角を半角に一括変換できる。

複数ファイルの全角数字を半角数字に一括置換する
:argdo %s/[0-9]\+/\=ToHankaku(submatch(0))/g | update

うん、よく数字の置換はするかな。便利よね。


なんか、置換置換打っていて痴漢になってたらあせるゎ、チェックしたんぜおk。