[Vim問題] ファイル内の英数字を全て大文字に変更する方法は?

ファイル全部を一括で大文字に変更する方法は?

この記事では、Vimでプラグインを使わずに「ファイル内の英数字を全て大文字に変更する」ための方法について、ご紹介します。

[解答] ggVG U または gg gU G

パターンA. ビジュアルモードを駆使する

(ノーマルモード)
:ggVG U

全選択した状態のビジュアルモードへ移行した後、大文字へ変換する手法です。

ビジュアルモードを使った大文字変換
ビジュアルモードを使った大文字変換

こちらは直感的で、ビジュアルモードで選択する範囲を変えれば、範囲を変更することができます。

パターンB. モーションとオペレータを駆使する

(ノーマルモード)
:gg gU G

こちらの方が Vimmer らしい方法かも知れません。

最初の行へ移動後、大文字へ変換するオペレータを指定し、ファイルの最後尾へ移動する手順です。

オペレーションを使った大文字変換
オペレーションを使った大文字変換

こちらは実行時のカーソル位置を起点に範囲指定するオペレータ gU がポイントです。

このようなモーション+オペレータの組み合わせこそ、Vimmer らしいと言われることが多いようです。

おまけ. 同じ行のテキストを全て大文字にする方法

パターンA. ビジュアルモードを駆使する

(ノーマルモード)
0v$U

行頭移動、ビジュアルモード化、行末移動、大文字変換の流れです。

いくつかの動作の組み合わせになるので、考え方がちょっと煩わしいですね。

パターンB. モーションとオペレータを駆使する

(ノーマルモード)
gUgU

または

(ノーマルモード)
gUU

こちらの方がスマートで Vimmer らしいかもしれませんね。

様々なパターンをぜひ覚えましょう。

目次

この変換パターンの補足情報

  • 利用頻度[star rate=3]
  • 便利さ[star rate=3]
  • 覚え易さ[star rate=1]

関連するVimヘルプ

紹介した方法のうち、gUオペレータについては下記のようにヘルプでは記載されています。

gU uppercase
gU{motion}      {motion} のテキストを大文字にする。
                        例: :map! <C-F> <Esc>gUiw`]a
                        これは挿入モードで機能する。カーソルの前の単語を大文字
                        にするときに CTRL-F を打ち込めばよい。単語は小文字で入
                        力し、後から大文字にする方が楽だ。

gUgU                                                    gUgU gUU
gUU                  現在行を大文字にする。

change – Vim日本語ドキュメント

こちらは下記のコマンドでヘルプを確認できます。

:help gU

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

参考書籍

こちらの書籍が参考になります。

[temp id=3]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

目次