viエディタ完全攻略|モード・hjkl・検索・保存・nano/emacs【LinuC 1.03.5】

LinuC対策

この記事はLinuC Level1 主題1.03.5「エディタを使った基本的なファイル編集の実行」に対応した要点解説です。試験で問われる範囲に絞り、viの3モード、起動・終了・保存、カーソル移動、入力切替、編集(削除/コピー/ペースト/アンドゥ)、検索・置換、行番号やタブ幅などの設定までを整理しました。

📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る


目次

  1. この記事でできるようになること
  2. viの3モードとESC
  3. viの起動と終了・保存
  4. 別ファイルへの切替・読み込み・外部コマンド
  5. カーソル移動
  6. 入力モードへの入り方:i / a / I / A / o / O
  7. 削除・コピー・ペースト・アンドゥ
  8. 検索と置換
  9. 行番号とタブ幅の設定
  10. viとvim
  11. よくある質問(FAQ)
  12. まとめ
  13. 模擬問題にチャレンジ(ランダム出題)

1. この記事でできるようになること

LinuC 主題1.03.5 の出題範囲のうち、本記事で押さえる要点:

  • ✅ viの3モード(コマンドモード/入力モード/コマンドラインモード)とESCの役割
  • vivi ファイル名vi -Rの起動動作
  • ✅ 保存・終了::w:q:q!:wq:xZZ:e!
  • ✅ 別ファイル操作::e:edit:e!:r:!コマンド
  • ✅ カーソル移動:hjkl0$ggGNG:NHLCtrl-FCtrl-B
  • ✅ 入力切替:iIaAoOの位置の違い
  • ✅ 編集:xXdddwyyywpPYと行数指定(5ddd5d5yyy5y3yy
  • ✅ 繰り返し・アンドゥ:.u
  • ✅ 検索:/?nN、置換::%s/old/new/g
  • ✅ 設定::set number:set nu:set tabstop=10:set ts=10
  • ✅ viから派生した高機能エディタvim

2. viの3モードとESC

viは「今どのモードにいるか」で同じキーの意味が変わります。まずは3モードと遷移を頭に入れます。

モード できること 入り方 抜け方
コマンドモード(ノーマルモード) 移動・削除・コピー(キー=コマンド) 起動直後/入力モードでESC
入力モード 文字の入力 iIaAoO 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 次の単語の先頭(dwywのモーションにも使う)

5-3. ファイル先頭・末尾・指定行

キー 動作
gg ファイルの先頭(1行目)へ
G ファイルの最終行
NG N行目へジャンプ(例:5Gで5行目)
:N N行目へジャンプ(例::5で5行目)
Ngg N行目へジャンプ(例:5ggで5行目)

「5行目へ移動」という問題では5G:55ggの3通りが正解になります。G5gg5順序が逆のものは動きません。

5-4. 画面内移動とページスクロール

キー 動作
H(High) 画面の最上行
L(Low) 画面の最下行
Ctrl-F(Forward) 1画面分にスクロール
Ctrl-B(Backward) 1画面分にスクロール

HLは「ファイル内の行」ではなく「今画面に見えている範囲」での移動です。G(ファイル末尾)とL(画面下端)を混同しないよう注意。


6. 入力モードへの入り方:i / a / I / A / o / O

コマンドモードから入力モードに移行するキーは、カーソルに対する位置の違いで使い分けます。

キー 動作
i(insert) カーソルの(直前)から挿入
a(append) カーソルの(直後)から追加
I(大文字アイ) 行頭(行の先頭文字の前)から挿入
A 行末から追加($aと同じ結果)
o(open) カーソル行のに空行を挿入し、その行で入力
O(大文字) カーソル行のに空行を挿入し、その行で入力

大文字と小文字で対になっていることに注目:iaは「カーソルの左/右」、IAは「行頭/行末」、oOは「下に新行/上に新行」。この3組を押さえればすべて判別できます。


7. 削除・コピー・ペースト・アンドゥ

7-1. 1文字・単語の削除

キー 動作
x カーソル位置の1文字を削除(Delete相当)
X カーソルの1文字を削除(Backspace相当)
dw カーソル位置から次の単語の先頭まで削除(delete word)

小文字xと大文字Xは削除対象が逆になる点が試験頻出です。

7-2. 行単位の削除・コピー

キー 動作
dd 現在行を削除(切り取り、バッファにも保存される)
5ddd5d 現在行から5行を削除(どちらの順でも動く)
yy 現在行をコピー(yank)
Y yyと同じ(現在行をコピー)
5yyy5y 現在行から5行をコピー(どちらでも動く)
yw カーソル位置から次の単語の先頭までコピー(yank word)

数字を前に付ける書き方(5dd)と間に挟む書き方(d5d)のどちらも同じ結果になるのがポイント。試験では「両方正しい」を選ばせる問題が出ます。

7-3. ペースト

キー 動作
p カーソルの右(後)にペースト。行コピー時はカーソル行の下に挿入
P(大文字) カーソルの左(前)にペースト。行コピー時はカーソル行の上に挿入
⚠️ コピー+貼り付けの典型パターン
・現在行をコピーしてに貼る:yy(またはY)の後にp
・3行コピーしてに貼る:3yy(またはy3y)の後にP
ddは削除(切り取り)なのでコピー要件では不正解。

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-thogeに置き換えたい」のように全行・全箇所置換を求められたら、%/gの両方が必要。%(全行)が抜けると現在行のみ、/gが抜けると各行の最初の1箇所しか置換されません。


9. 行番号とタブ幅の設定

コマンド 動作
:set number:set nu 行番号を表示する
:set nonumber:set nonu 行番号を非表示に戻す
:set tabstop=10:set ts=10 タブ幅を10に設定(デフォルトは通常8)

:set系のオプションは長い名前(numbertabstop)と短縮形(nuts)の両方が動くのが試験のポイント。オフにするときは先頭にnoを付けた形(nonumbernonu)を使います。


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:xZZはどう違う?

実用上はほぼ同じ「保存+終了」です。厳密には:xは変更があったときだけ書き込み、:wqは常に書き込みます。ZZはコマンドモードでShift-zを2回押す:wqのショートカット版です。

Q. :e!:q!はどう使い分ける?

どちらも!で「変更を破棄」しますが、:e!同じファイルを再読込(viは開いたまま)、:q!終了。「変更を捨ててやり直したいが編集は続けたい」なら:e!、「諦めて閉じたい」なら:q!です。

Q. 5ddd5dはどちらが正しい?

両方とも正しく動きます。「現在行から5行を削除」という意味で、数字の位置が前でも間でも結果は同じ。5yyy5yも同様です。試験では「両方正しい」を選ばせる問題が出ます。

Q. nが常に「下方向」と覚えていいですか?

よくありません。n検索と同じ方向に次へ進むキーです。/pattern(下方向検索)から始めればnは下方向ですが、?pattern(上方向検索)から始めればnは上方向に動きます。Nは常にその逆方向です。


12. まとめ

  • 3モード:コマンド/入力/コマンドライン。入力モードから抜けるのはESC
  • 起動vi(空バッファ)/vi ファイルvi -R ファイル(読み取り専用、大文字R)
  • 保存・終了:w(保存のみ)/:q(未変更時のみ)/:q!(強制)/:wq:xZZ
  • 再読込:e!(未保存変更を破棄してファイルを再読込、viは閉じない)
  • 別ファイル:e:edit(切替)/:r(カーソル行の次に読み込む)/:!ls(外部シェル実行)
  • 移動h j k l(左下上右)/0行頭/$行末/gg先頭/G末尾/5G:55ggでN行目/H画面上端・L画面下端/Ctrl-F下・Ctrl-B
  • 入力i左/a右/I行頭/A行末/o下に新行/O上に新行
  • 削除x(カーソル位置1文字)/X(左1文字)/dw(単語)/dd(行)/5ddd5d(5行)
  • コピー・貼付yyY(行)/yw(単語)/5yyy5yp(右・下)/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 模擬問題ポータルから他の分野にも挑戦できます。


おすすめの教材


Linux教科書 LPICレベル1

Linux教科書 LPICレベル1 Version 5.0対応(あずき本)

LinuC/LPIC Level1 の定番参考書。出題範囲全体を網羅。


Amazonで見る →

【ウズカレ式】1週間でLinuxの基本操作と管理・運用スキルが学べる講座

累計80,000人以上受講。LinuC Level1を1週間で網羅。viエディタの操作もカバー。


Udemyで講座を見る →


関連記事

📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます

Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

タイトルとURLをコピーしました