『Linux標準教科書』を読み始めながら、学びを自分の言葉で整理した忘備録です。
標準教科書の内容についてChatGPTの対話で得た理解・補足をかみ砕いてまとめました。
本記事は全12章のうちの第6章。vimについて、標準教科書を軸にしながらChatGPTとの会話を肉付けしていく形で整理したものになります。
学ぶ途中のつまずきや疑問もそのまま残す方針なので、同じところで悩む人の助けになればと思ってます!
5章と7章のまとめも併せてご確認ください!
目次
ファイルを開く/閉じる
-
vi filename:ファイルを開く -
:w:上書き保存 -
:q:終了(未保存の変更があると終了できない) -
:q!:強制終了。未保存の変更を破棄して閉じる -
:wq:保存して終了
ステータス行の想定メッセージ
:w → "filename" [unix] 12L, 345B written
:q(未保存あり) → E37: No write since last change (add ! to override)
:q! → (終了。メッセージなしのことが多い)
:wq → "filename" 12L, 345B written
インサートモード
-
i:カーソル位置の手前から挿入 -
a:カーソル位置の直後から挿入(訂正:aは1文字後ろにずれてから挿入) -
I:その行の先頭の非空白位置へ移動して挿入開始(単純に列0ではない) -
A:その行の末尾に移動して挿入開始 -
<Esc>:ノーマルモードへ戻る
想定メッセージ
-- INSERT -- (画面右下/ステータスに挿入モード表示)
移動
カーソルの移動
-
0:行頭(列0) へ -
$:行末へ -
:10:10行目へジャンプ(Exコマンド) -
G:末尾行へ
想定メッセージ
:10 → (メッセージなしで10行目へ移動)
ページの移動
-
Ctrl+f:1画面分進む(forward) -
Ctrl+b:1画面分戻る(backward) - 小ネタ:
Ctrl+d半画面下、Ctrl+u半画面上
コピペ
-
x:カーソル位置の1文字削除(レジスタに入る=切り取り相当) -
dd:1行削除(切り取り) -
yy:1行コピー(ヤンク) -
nyy:n行コピー(例:3yy) -
p:貼り付け(文字は後ろ、行は現在行の下) -
P:貼り付け(文字は前、行は現在行の上) -
u:1段階アンドゥ(取り消し) -
Ctrl+r:リドゥ(やり直し)
例(行のコピー&貼り付け)
操作: yy (現在行をコピー)
p (現在行の下に貼り付け)
ステータス: 1 line yanked / 1 more line
検索
-
/文字列:前方(下方向)検索 -
?文字列:後方(上方向)検索 -
n:直前の検索と同じ方向に次候補へ -
N:直前の検索と逆方向に次候補へ
例
/foo → "foo" の次一致へジャンプ(強調表示)
n → 次の "foo"
N → 直前方向の反対側へ
置換
-
書式(Exコマンド):
:[範囲]s/old/new/[フラグ] -
:n s/old/new/g:n行目だけでoldを全てnewに置換(訂正:「: ns...」ではなく「:n s...」) -
:%s/old/new/g:ファイル全体を対象にold→newへ -
:%s/old/new/gc:全体+逐次確認(c=confirm) - よく使うフラグ:
g(行内すべて)、c(確認)、i(大文字小文字無視)
想定メッセージ
:3 s/foo/bar/g → 2 substitutions on 1 line
:%s/http/https/g → 8 substitutions on 5 lines
:%s/error/ERROR/gc → replace with ERROR? [y/n/a/q/l/^E/^Y]
確認置換の対話キー例
-
y置換する -
nスキップ -
a以後すべて置換 -
q置換を終了 -
l現在位置のみ置換して終了