この記事はLinuC Level1 主題1.03.5「エディタを使った基本的なファイル編集の実行」に対応した要点解説です。試験で問われる範囲に絞り、viの3モード、起動・終了・保存、カーソル移動、入力切替、編集(削除/コピー/ペースト/アンドゥ)、検索・置換、行番号やタブ幅などの設定までを整理しました。
📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る
目次
- この記事でできるようになること
- viの3モードとESC
- viの起動と終了・保存
- 別ファイルへの切替・読み込み・外部コマンド
- カーソル移動
- 入力モードへの入り方:i / a / I / A / o / O
- 削除・コピー・ペースト・アンドゥ
- 検索と置換
- 行番号とタブ幅の設定
- viとvim
- よくある質問(FAQ)
- まとめ
- 模擬問題にチャレンジ(ランダム出題)
1. この記事でできるようになること
LinuC 主題1.03.5 の出題範囲のうち、本記事で押さえる要点:
- ✅ viの3モード(コマンドモード/入力モード/コマンドラインモード)と
ESCの役割 - ✅
vi/vi ファイル名/vi -Rの起動動作 - ✅ 保存・終了:
:w/:q/:q!/:wq/:x/ZZ/:e! - ✅ 別ファイル操作:
:e/:edit/:e!/:r/:!コマンド - ✅ カーソル移動:
hjkl/0/$/gg/G/NG/:N/H/L/Ctrl-F/Ctrl-B - ✅ 入力切替:
i/I/a/A/o/Oの位置の違い - ✅ 編集:
x/X/dd/dw/yy/yw/p/P/Yと行数指定(5dd/d5d/5yy/y5y/3yy) - ✅ 繰り返し・アンドゥ:
./u - ✅ 検索:
//?/n/N、置換::%s/old/new/g - ✅ 設定:
:set number/:set nu、:set tabstop=10/:set ts=10 - ✅ viから派生した高機能エディタ
vim
2. viの3モードとESC
viは「今どのモードにいるか」で同じキーの意味が変わります。まずは3モードと遷移を頭に入れます。
| モード | できること | 入り方 | 抜け方 |
|---|---|---|---|
| コマンドモード(ノーマルモード) | 移動・削除・コピー(キー=コマンド) | 起動直後/入力モードでESC |
— |
| 入力モード | 文字の入力 | i/I/a/A/o/O |
ESC |
| コマンドラインモード | 保存・終了・検索・置換・設定 | :///? |
Enterまたはコマンド確定 |
ESC入力モードでは
:wqなどのコロンコマンドは機能しません。まずESCでコマンドモードに戻り、それから:wや:qを打ちます。何が起きているか分からなくなったときも、まずESC。
3. viの起動と終了・保存
3-1. 起動方法
| コマンド | 動作 |
|---|---|
vi(引数なし) |
新規の空のバッファで編集開始。保存時に:w ファイル名で名前を付けて書き出す |
vi ファイル名 |
既存ファイルを開く。ファイルが存在しない場合は空のバッファが開き、:wで初めてその名前のファイルが作られる |
vi -R ファイル名 |
読み取り専用で開く(viewコマンドでも同じ)。編集は可能だが保存時に警告が出て、:w!で強制書き込みすれば保存できる |
読み取り専用オプションは大文字の-Rである点に注意。小文字の-rはクラッシュからのリカバリ用で別の意味です。
3-2. 保存と終了のコマンド
| コマンド | 動作 |
|---|---|
:w |
保存のみ(エディタは閉じない) |
:q |
終了(未保存の変更があると拒否される) |
:q! |
変更を破棄して強制終了 |
:wq |
保存して終了 |
:x |
保存して終了(変更があったときだけ書き込む点が:wqと微妙に違うが、ほぼ同じ) |
ZZ |
コマンドモードで:wq相当(Shift-zを2回) |
:e! |
未保存の変更を破棄して同じファイルを再読込(viは終了しない) |
!(エクスクラメーション)の意味viのコマンド末尾に付く
!は「強制」の意味。:q!=変更を破棄して終了、:w!=読み取り専用にも無理やり書き込む、:e!=未保存変更を捨てて再読込。覚え方は「!は警告を無視する印」。
入力モードで編集している最中に保存して終了したいときは、必ずESCでコマンドモードに戻ってから:wqまたはZZを入力します。入力モードのまま:wqと打っても、それは単なる文字入力として扱われます。
逆に「変更を全部捨てて最後に保存した状態に戻したい(でもviは閉じたくない)」ときは:e!が該当。:q!は終了してしまうので用途が違います。
4. 別ファイルへの切替・読み込み・外部コマンド
| コマンド | 動作 |
|---|---|
:e newfile / :edit newfile |
別ファイルを開く(未保存の変更があると拒否) |
:e! newfile |
未保存の変更を破棄して別ファイルを強制的に開く |
:r ファイル名 |
別ファイルの内容を現在のカーソル行の次に読み込む(現在のバッファの末尾に追加ではない) |
:!コマンド |
viを終了せずにシェルコマンドを実行(例::!ls)。実行後Enterでviに戻る |
:e(切替)と:r(取り込み)は混同しやすい箇所。:eは現在のバッファを捨てて別ファイルに移動するのに対し、:rは現在の編集内容を保ったままカーソル行の次に別ファイルの中身を挿入します。
:!lsの!はコマンドラインモードにおける「シェル実行」の合図で、終了強制の:q!とは意味が違います。:ls(!なし)はviのバッファ一覧表示という別機能なので、ファイル一覧を見たいときは必ず:!lsと書きます。
5. カーソル移動
5-1. 基本移動(hjkl)
| キー | 動作 |
|---|---|
h |
左(1文字) |
j |
下(1行) |
k |
上(1行) |
l |
右(1文字) |
矢印キーでも動きますが、ホームポジションから手を離さないhjklがviの標準です。試験では「1文字左右上下のキーはどれか」が定番問題。
5-2. 行内の移動と単語単位
| キー | 動作 |
|---|---|
0(ゼロ) |
行頭(行の1文字目)へ |
$ |
行末へ |
w |
次の単語の先頭(dw/ywのモーションにも使う) |
5-3. ファイル先頭・末尾・指定行
| キー | 動作 |
|---|---|
gg |
ファイルの先頭(1行目)へ |
G |
ファイルの最終行へ |
NG |
N行目へジャンプ(例:5Gで5行目) |
:N |
N行目へジャンプ(例::5で5行目) |
Ngg |
N行目へジャンプ(例:5ggで5行目) |
「5行目へ移動」という問題では5G/:5/5ggの3通りが正解になります。G5やgg5の順序が逆のものは動きません。
5-4. 画面内移動とページスクロール
| キー | 動作 |
|---|---|
H(High) |
画面の最上行へ |
L(Low) |
画面の最下行へ |
Ctrl-F(Forward) |
1画面分下にスクロール |
Ctrl-B(Backward) |
1画面分上にスクロール |
H/Lは「ファイル内の行」ではなく「今画面に見えている範囲」での移動です。G(ファイル末尾)とL(画面下端)を混同しないよう注意。
6. 入力モードへの入り方:i / a / I / A / o / O
コマンドモードから入力モードに移行するキーは、カーソルに対する位置の違いで使い分けます。
| キー | 動作 |
|---|---|
i(insert) |
カーソルの左(直前)から挿入 |
a(append) |
カーソルの右(直後)から追加 |
I(大文字アイ) |
行頭(行の先頭文字の前)から挿入 |
A |
行末から追加($aと同じ結果) |
o(open) |
カーソル行の下に空行を挿入し、その行で入力 |
O(大文字) |
カーソル行の上に空行を挿入し、その行で入力 |
大文字と小文字で対になっていることに注目:i/aは「カーソルの左/右」、I/Aは「行頭/行末」、o/Oは「下に新行/上に新行」。この3組を押さえればすべて判別できます。
7. 削除・コピー・ペースト・アンドゥ
7-1. 1文字・単語の削除
| キー | 動作 |
|---|---|
x |
カーソル位置の1文字を削除(Delete相当) |
X |
カーソル左の1文字を削除(Backspace相当) |
dw |
カーソル位置から次の単語の先頭まで削除(delete word) |
小文字xと大文字Xは削除対象が逆になる点が試験頻出です。
7-2. 行単位の削除・コピー
| キー | 動作 |
|---|---|
dd |
現在行を削除(切り取り、バッファにも保存される) |
5dd / d5d |
現在行から5行を削除(どちらの順でも動く) |
yy |
現在行をコピー(yank) |
Y |
yyと同じ(現在行をコピー) |
5yy / y5y |
現在行から5行をコピー(どちらでも動く) |
yw |
カーソル位置から次の単語の先頭までコピー(yank word) |
数字を前に付ける書き方(5dd)と間に挟む書き方(d5d)のどちらも同じ結果になるのがポイント。試験では「両方正しい」を選ばせる問題が出ます。
7-3. ペースト
| キー | 動作 |
|---|---|
p |
カーソルの右(後)にペースト。行コピー時はカーソル行の下に挿入 |
P(大文字) |
カーソルの左(前)にペースト。行コピー時はカーソル行の上に挿入 |
・現在行をコピーして下に貼る:
yy(またはY)の後にp・3行コピーして上に貼る:
3yy(またはy3y)の後にPddは削除(切り取り)なのでコピー要件では不正解。
7-4. 繰り返しとアンドゥ
| キー | 動作 |
|---|---|
.(ドット) |
直前の編集を繰り返す。同じ編集を何箇所にも適用するのに便利 |
u |
アンドゥ(直前の編集を取り消す)。vimでは連打で段階的に戻せる |
Ctrl-R |
リドゥ(アンドゥの取り消し) |
.(繰り返し)とu(アンドゥ)、Ctrl-R(リドゥ)は紛らわしいので対で覚えます。
8. 検索と置換
8-1. 検索
| コマンド | 動作 |
|---|---|
/pattern |
カーソル位置からファイル末尾方向(下方向)へ検索 |
?pattern |
カーソル位置からファイル先頭方向(上方向)へ検索 |
n |
検索と同じ方向の次の候補へ |
N |
検索と逆方向の次の候補へ |
/sbinで下方向検索をしているなら、nは下方向に次のマッチ、Nは上方向に戻ります。?sbinで始めた場合はnが上方向に動くので、「n=下、N=上」と固定で覚えるのは誤りです。
# sbin を下方向に検索
/sbin↵
# 同じ方向(下)で次の候補へ
n
# 逆方向(上)で次の候補へ
N
8-2. 置換
| コマンド | 動作 |
|---|---|
:s/old/new/ |
現在行の最初の1箇所のみ置換 |
:s/old/new/g |
現在行の全ての箇所 |
:%s/old/new/g |
ファイル全行・全箇所を置換 |
「ファイル全体の全てのping-tをhogeに置き換えたい」のように全行・全箇所置換を求められたら、%と/gの両方が必要。%(全行)が抜けると現在行のみ、/gが抜けると各行の最初の1箇所しか置換されません。
9. 行番号とタブ幅の設定
| コマンド | 動作 |
|---|---|
:set number / :set nu |
行番号を表示する |
:set nonumber / :set nonu |
行番号を非表示に戻す |
:set tabstop=10 / :set ts=10 |
タブ幅を10に設定(デフォルトは通常8) |
:set系のオプションは長い名前(number/tabstop)と短縮形(nu/ts)の両方が動くのが試験のポイント。オフにするときは先頭にnoを付けた形(nonumber/nonu)を使います。
10. viとvim
vim(Vi IMproved)はviから派生した高機能なテキストエディタで、シンタックスハイライト、スクリプトによる拡張、プラグイン機構などが追加されています。多くのLinuxディストリビューションではviコマンド自体がvimへのシンボリックリンクやラッパになっており、viと打っても実際にはvimが動くケースが一般的です。
LinuC試験では「viから派生した高機能テキストエディタ」と問われればvimが答え。nanoはvi系ではないモードレスのエディタ、emacsは別系統の拡張性エディタ、geditはGNOMEのGUIエディタ、sedはそもそもエディタではなくストリームエディタ(フィルタコマンド)です。
11. よくある質問(FAQ)
Q. 入力モードから抜けるキーは?
ESCです。入力モードのままでは:wqなどのコロンコマンドは単なる文字入力扱いになります。保存や終了をしたいときは必ずESCでコマンドモードに戻ってから。
Q. :qと:q!の違いは?
:qは「変更が無ければ終了、あれば拒否」。未保存の変更が残っている状態ではE37: No write since last changeと警告が出ます。:q!は!が「強制」の意味で、変更を破棄して終了します。
Q. :wq/:x/ZZはどう違う?
実用上はほぼ同じ「保存+終了」です。厳密には:xは変更があったときだけ書き込み、:wqは常に書き込みます。ZZはコマンドモードでShift-zを2回押す:wqのショートカット版です。
Q. :e!と:q!はどう使い分ける?
どちらも!で「変更を破棄」しますが、:e!は同じファイルを再読込(viは開いたまま)、:q!は終了。「変更を捨ててやり直したいが編集は続けたい」なら:e!、「諦めて閉じたい」なら:q!です。
Q. 5ddとd5dはどちらが正しい?
両方とも正しく動きます。「現在行から5行を削除」という意味で、数字の位置が前でも間でも結果は同じ。5yy/y5yも同様です。試験では「両方正しい」を選ばせる問題が出ます。
Q. nが常に「下方向」と覚えていいですか?
よくありません。nは検索と同じ方向に次へ進むキーです。/pattern(下方向検索)から始めればnは下方向ですが、?pattern(上方向検索)から始めればnは上方向に動きます。Nは常にその逆方向です。
12. まとめ
- 3モード:コマンド/入力/コマンドライン。入力モードから抜けるのは
ESC - 起動:
vi(空バッファ)/vi ファイル/vi -R ファイル(読み取り専用、大文字R) - 保存・終了:
:w(保存のみ)/:q(未変更時のみ)/:q!(強制)/:wq/:x/ZZ - 再読込:
:e!(未保存変更を破棄してファイルを再読込、viは閉じない) - 別ファイル:
:e/:edit(切替)/:r(カーソル行の次に読み込む)/:!ls(外部シェル実行) - 移動:
h j k l(左下上右)/0行頭/$行末/gg先頭/G末尾/5G・:5・5ggでN行目/H画面上端・L画面下端/Ctrl-F下・Ctrl-B上 - 入力:
i左/a右/I行頭/A行末/o下に新行/O上に新行 - 削除:
x(カーソル位置1文字)/X(左1文字)/dw(単語)/dd(行)/5dd・d5d(5行) - コピー・貼付:
yy・Y(行)/yw(単語)/5yy・y5y/p(右・下)/P(左・上) - 繰返・アンドゥ:
.(直前の編集を繰り返す)/u(アンドゥ) - 検索:
/下方向/?上方向/n同方向/N逆方向 - 置換:
:%s/old/new/gでファイル全行・全箇所 - 設定:
:set number(:set nu)、:set tabstop=10(:set ts=10) - vim:viから派生した高機能版。多くのディストリで
viの実体はvim
📚 LinuC Level1 完全攻略マップから他の主題にも進めます。
13. 模擬問題にチャレンジ(ランダム出題)
ここまでの内容を本試験に近い形で確認できます。問題数を選んで「出題スタート」を押すと、主題1.03.5の問題プール(52問)からランダムに出題されます。選択肢をクリック/タップすると、正誤と解説がその場で表示されます。
合格ライン目安:75%以上。間違えた設問は本文の該当章(7章の編集コマンド、5章のカーソル移動、3章の保存・終了など)に戻って知識を補強しましょう。もっと幅広く解きたい場合はLinuC 模擬問題ポータルから他の分野にも挑戦できます。
おすすめの教材
関連記事
📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます
- 前の主題:正規表現を使用したテキストファイルの検索(LinuC 1.03.4)
- 主題1.03の起点:コマンドラインの操作(LinuC 1.03.1)



コメント