本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第9回 vi 入門|置換コマンド(r, :s)の基本と効率的な修正術|UNIX Cafe

vi 入門 | 第9回
修正がぐっと楽になる「vi 置換コマンド」の使い方
編集しているとき、文字を消して書き直すより、その場で置き換えたほうが早い場面があります。特に、小さな打ち間違いや短い語句の修正では、置換コマンドを知っているだけで操作の手数がかなり減ります。
今回のゴールは、r と :s/old/new/ を使って、1文字と文字列の置換を使い分けられるようになることです。どちらも難しくありません。実例を見ながら、順番に試してみましょう。
動画で流れを先に見たい方は、UNIX Cafe の YouTube もあわせてどうぞ。記事と同じく、初心者向けのやさしい流れで vi の操作を確認できます。
📝 この記事で学べること
rで1文字だけをその場で置き換える方法:s/old/new/で行の中の文字列を置き換える方法- 行全体・ファイル全体に置換を広げるオプション(
gフラグ・%s) rと:sの使い分けの基準
置換は「消して書く」より早いことがある
たとえば「appla」と打ち間違えたとき、ふつうは x や i を組み合わせて修正しようとします。しかし、1文字だけ違う・単語を差し替えたい、といった場面では、置換コマンドのほうが操作が少なく済みます。
置換コマンドを使えば、カーソルを合わせてコマンドを1つ打つだけで修正が完了します。「消す→入力モード→書く→Esc」という手順を省けるのが大きなメリットです。
r で1文字だけ置き換える
r は、カーソル位置の1文字を別の1文字にその場で置き換えるコマンドです。入力モードに切り替える必要がなく、コマンドモードのままで使えます。
r(置き換えたい文字)操作の流れはシンプルです。まずカーソルを直したい文字の上に移動し、r を押します。すると次に打った1文字が、カーソル位置の文字と入れ替わります。Esc を押す必要もなく、置き換えが終わったら自動的にコマンドモードに戻ります。
r の実例:1文字だけ打ち間違えたとき
たとえば、次のように打ち間違えたとします。
Before(間違い)
appla orange bananaAfter(修正後)
apple orange banana「appla」の最後の「a」を「e」に直したい場合、操作は次のようになります。
lキーなどで、カーソルを「a」の上に移動するrを押す- 続けて
eを押す
これだけで「appla」が「apple」に変わります。入力モードへの切り替えも、Esc も不要です。
⚠ 注意:r は1文字しか置き換えられません
r の後に2文字以上を打っても、最初の1文字だけが置き換わり、残りはコマンドとして解釈されます。2文字以上を直したいときは :s を使いましょう。
:s/old/new/ で文字列を置き換える
:s/old/new/ は、行の中の特定の文字列を別の文字列に置き換えるコマンドです。old に元の文字列、new に新しい文字列を入れて使います。
:s/old/new/このコマンドはコマンドモードで :(コロン)を押したあと入力します。画面の下部にカーソルが移動するので、そこに続けて打ちます。
:s の実例:単語を差し替えたいとき
たとえば、カーソルがある行に「orange」という語があり、「melon」に変えたい場合は次のように入力します。
Before
apple orange bananaAfter
apple melon banana:s/orange/melon/Enter を押すと、カーソルのある行の「orange」が「melon」に置き換わります。ただし、デフォルトでは行の中で最初に見つかった1箇所だけが対象になります。
行の中の同じ語をすべて置き換える:g フラグ
同じ語が行の中に複数あるとき、末尾に g を付けると、その行に含まれるすべての一致を置き換えます。
Before
cat and cat and catAfter
dog and dog and dog:s/cat/dog/gg は「global(グローバル)」の略で、「この行の中にあるものを全部」という意味です。g なしだと最初の1箇所だけ、g ありだと行全体が対象になります。
ファイル全体を一括置換する:%s
ファイル全体の特定の語をまとめて置き換えたいときは、:s の代わりに :%s を使います。
:%s/old/new/g% は「ファイル全体」を意味します。:%s/old/new/g とすると、ファイルのすべての行に含まれる old が new に置き換わります。変数名やファイルパスの修正など、まとめて直したいときに便利です。
⚠ 注意::%s は元に戻せないケースがあります
ファイル全体の一括置換は、意図しない箇所まで書き換えてしまうことがあります。実行前に :w で保存しておくか、小さなファイルで試してから使いましょう。間違えた場合は u(アンドゥ)で直前の操作を取り消せます。
r と :s の使い分け
どちらを使うか迷ったときは、「直したいのが1文字かどうか」で判断しましょう。
- 1文字だけ直したい →
r(カーソルを合わせて r + 新しい文字) - 単語や短い文字列を直したい →
:s/old/new/ - 行の中の同じ語をすべて直したい →
:s/old/new/g - ファイル全体をまとめて直したい →
:%s/old/new/g
最初は r と :s/old/new/ の2つだけ覚えれば十分です。慣れてきたら g や %s を少しずつ使ってみましょう。
まとめ|小さな修正ほど置換が効く
✔ この記事のまとめ
rはカーソル位置の1文字をその場で置き換える。入力モード不要:s/old/new/は行の中の文字列を置き換える。最初の1箇所が対象:s/old/new/gは行全体の一致をすべて置き換える:%s/old/new/gはファイル全体を一括置換する- 迷ったら「1文字なら
r、文字列なら:s」で判断する
置換コマンドは、覚えた瞬間から「消して書き直す」手間が減ります。まずは r だけでも試してみると、操作がずいぶん楽に感じられるはずです。
次回予告
次は、「vi ビジュアルモード」の実践編を見ていきます。範囲を目で確認しながら選択・削除・コピーができるビジュアルモードは、置換と組み合わせるとさらに便利になります。
あわせて読みたい
検索の基本をもう一度確認したい方は、「vi 検索コマンド」の基本もあわせてどうぞ。









