← Vim研究所

Vimで大文字・小文字を変換する方法まとめ(範囲指定/1文字/置換)

2019-05-08 公開 ・ 更新: 2026-08-05

変数名の大文字小文字を統一したいだけなのに、消して打ち直すのは面倒です。Vimには範囲や場面ごとに複数の変換コマンドが用意されています。一通り知っておくと、その場に応じて一番速い方法を選べるようになります。

目次(7項目)
キーこれだけ覚える
gUiw / guiwカーソル位置の単語を大文字化 / 小文字化
ビジュアルモードでU / u選択範囲を大文字化 / 小文字化
~カーソル下の1文字を反転
gUU / guu行全体を大文字化 / 小文字化

ビジュアルモードで範囲選択して変換

v{範囲選択}U   " 大文字化
v{範囲選択}u   " 小文字化

目で見て選んだ範囲をそのまま変換できるので直感的で、最初に覚える人が多い方法です。ただしノーマルモードのu(アンドゥ)・U(行単位のアンドゥ)と同じキーのため、ビジュアルモードに入っているかを確認せずに打つと、意図と違う結果になることがあります。

ノーマルモードでモーション指定して変換

gUiw   " カーソル位置の単語を大文字化
guiw   " カーソル位置の単語を小文字化
gUU    " 行全体を大文字化(guuの逆)
guu    " 行全体を小文字化
BEFORE
hello world
gUiw
AFTER
HELLO world

gU/guはオペレータなので、iw$など任意のモーション・テキストオブジェクトと組み合わせられます。ビジュアルモードで範囲を目視確認する手間を省きたいときは、こちらのほうが速くなります。

大文字と小文字を反転する

~      " カーソル下の1文字を反転
g~iw   " 単語全体を反転
BEFORE
hello
~
AFTER
Hello

~はカーソル下の1文字だけを大文字↔小文字に反転します。[count]を前置きすれば複数文字をまとめて反転できます。g~はオペレータ版で、gU/guと同じ要領でモーションと組み合わせられます。

反復と組み合わせる

gUiwguiwのようなオペレータ系のコマンドは、実行後に.(ドットコマンド)で同じ変換を繰り返せます。次の単語へwで移動して.を押すだけで、選択操作を挟まずに複数の単語を次々に変換できます。ビジュアルモードのU/uは選択の手間が毎回発生する分、この繰り返しやすさでも差が出ます。

ファイル全体を一括変換する

単語や行単位だけでなく、ファイル全体をまとめて変換したい場面もあります。ビジュアルモードで全選択してから変換する方法と、オペレータとモーションを組み合わせる方法の2通りがあります。

ggVGU   " ビジュアルモードで全選択してから大文字化
gggUG   " オペレータ+モーションで先頭から末尾まで大文字化

ggVGUは、ファイル先頭(gg)に移動してから行単位ビジュアルモード(V)に入り、末尾(G)まで選択して大文字化(U)する流れです。gggUGは、ファイル先頭に移動してからgUオペレータにファイル末尾へのモーションGを渡す、より短い書き方です。小文字化したい場合はUugUguに置き換えれば十分です。

置換コマンドで変換する

正規表現の置換パターンの中でも大文字小文字を制御できます。

:s/\(.*\)/\U\1/   " マッチ全体を大文字化
:s/\(.*\)/\L\1/   " マッチ全体を小文字化
:s/\<./\u&/g      " 各単語の先頭だけ大文字化

\U/\Lはそれ以降を大文字/小文字化、\u/\lは次の1文字だけを大文字/小文字化します。複数行にまたがる一括変換や、条件付きの変換をしたいときに向いています。

要点:単発で範囲を目視確認したいならビジュアルモード、素早く単語単位で変換したいならgU/gu、1文字だけなら~、複数行にまたがる一括変換なら置換コマンドです。用途で選べば迷いません。
使ってみて

最初はビジュアルモードのU/uしか知らず、単語単位の変換のたびに選択操作を挟んでいました。gUiwを覚えてからは選択の手間が消え、変数名を書き換える作業がかなり速くなりました。ただしビジュアルモードのu/Uとノーマルモードのアンドゥを混同しかけたことは今でもあります。

まとめ

大文字小文字変換にはビジュアル選択・オペレータ・1文字反転・置換コマンドと複数の手段があります。ビジュアルモードのU/uとノーマルモードのアンドゥの混同については別記事で詳しく触れています。

← Vim研究所 トップへ戻る