← Vim道場

大文字と小文字を変える

定数名を大文字にする、貼り付けた文字列を小文字に直す。打ち直せば済みますが、Vimには大小を変えるためのキーがあります。打ち直しと違って、綴りを間違える心配がありません。

第2章 文字を直すレッスン 11 / 36

3つの向き

gU は大文字へ、gu は小文字へ、g~ は入れ替えです。どれもオペレータなので、dc と同じようにモーションやテキストオブジェクトを続けて書けます。gUiw(単語)gU$(行末まで)gUap(段落)といった具合です。

1文字だけの ~ は例外的にオペレータではなく、押すとその場で入れ替えて右へ進みます。1や記号のように大小のない文字はそのまま素通りします。

ビジュアルモードから使う

範囲が複雑なときは v で選んでから U(大文字)u(小文字)~(入れ替え)でも同じことができます。ビジュアルモードでは g が要りません。

gUU と guu は行全体

オペレータを同じ文字で重ねると1行が対象になる、という規則はここにも当てはまります。gUU で行全体を大文字に、guu で行全体を小文字にできます。gUgU と打っても同じです。

定数の宣言をまとめて大文字にしたいときなど、行単位で処理したい場面は意外とあります。dd cc yy と同じ形なので、覚え直す必要はありません。

~ をオペレータに変える設定

~ は既定では1文字ずつ処理する例外的なキーですが、set tildeop を書くとオペレータとして振る舞うようになります。この設定を入れると ~w で単語1つ、~~ で1行という書き方に変わります。

そのぶん、これまでどおり1文字だけ入れ替えたいときは ~l と打つことになります。既定のままにしておくか設定するかは好みで、どちらでも gU gu の使い方は変わりません。

大小の区別がない文字は素通りする

日本語・数字・記号には大文字と小文字の区別がないので、これらの上で gU~ を使っても文字は変わりません。英数字混じりの行に gUU をかけても、日本語の部分はそのまま残ります。

そのため、範囲を細かく選ばずに行ごと処理してしまっても副作用が出にくく、結果として gUU のような大きい単位が使いやすくなっています。

このレッスンで扱うキー

キー動き
~1文字の大小を入れ替える
gUiw単語を大文字にする
guiw単語を小文字にする
gUU1行を大文字にする

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける