サーバー上でファイルを編集する際に避けて通れないのが Vim です。 GUIが使えない環境でも動作し、SSHで接続したリモートサーバーでも使える強力なエディタです。 最初は戸惑いますが、基本操作を覚えれば素早いファイル編集が可能になります。
Vimのモードとは
Vimには複数のモードがあり、状態によってキー操作の意味が変わります。
| モード | 説明 |
|---|---|
| ノーマルモード | 起動直後の状態。カーソル移動・コマンド入力 |
| インサートモード | 文字を入力する状態 |
| コマンドラインモード | ファイルの保存・終了などを行う状態 |
| ビジュアルモード | テキストを範囲選択する状態 |
最初は「ノーマルモード」で始まり、i を押してインサートモードに切り替えます。
Esc を押すとノーマルモードに戻ります。
ファイルを開く
vim filename.txt
存在しないファイルを指定すると新規作成になります。
カーソル移動(ノーマルモード)
Vimではカーソル移動にアルファベットキーを使います(矢印キーも使えます)。
| キー | 移動方向 |
|---|---|
h | 左 |
j | 下 |
k | 上 |
l | 右 |
w | 次の単語の先頭へ |
b | 前の単語の先頭へ |
0 | 行の先頭へ |
$ | 行の末尾へ |
gg | ファイルの先頭へ |
G | ファイルの末尾へ |
:N | N行目へ移動(例: :10) |
テキストの入力(インサートモード)
ノーマルモードから次のキーでインサートモードに入れます。
| キー | 動作 |
|---|---|
i | カーソル位置の前から入力 |
a | カーソル位置の後から入力 |
o | 現在行の下に新しい行を開いて入力 |
O | 現在行の上に新しい行を開いて入力 |
I | 行の先頭から入力 |
A | 行の末尾から入力 |
インサートモードを終了するには Esc を押します。
保存と終了(コマンドラインモード)
ノーマルモードで : を押すとコマンドラインモードに入ります。
| コマンド | 動作 |
|---|---|
:w | 保存 |
:q | 終了(変更がある場合はエラー) |
:wq | 保存して終了 |
:q! | 変更を破棄して強制終了 |
:x | 変更があれば保存して終了(:wq と同様) |
画面下部に : が表示されていればコマンドラインモードです。
# 実際の操作の流れ
$ vim sample.txt # ファイルを開く
# ノーマルモードで始まる
# i を押してインサートモードへ
# テキストを入力する
# Esc を押してノーマルモードへ戻る
# :wq と入力して保存・終了
テキストの削除・コピー・貼り付け
ノーマルモードで使える操作です。
| キー | 動作 |
|---|---|
x | カーソル位置の1文字を削除 |
dd | 現在行を丸ごと削除(カット) |
dw | カーソル位置から次の単語まで削除 |
yy | 現在行をコピー |
p | カーソルの後に貼り付け |
P | カーソルの前に貼り付け |
u | 直前の操作を取り消す(Undo) |
Ctrl+r | Undoを取り消す(Redo) |
dd で削除した行は p で貼り付けることができます。
文字列の検索
ノーマルモードで / に続けてキーワードを入力すると検索できます。
/キーワード # 前方検索
?キーワード # 後方検索
n # 次の一致へ
N # 前の一致へ
例えば “error” を検索するには次のように入力します。
/error
文字列の置換
コマンドラインモードで s コマンドを使います。
# 現在行の最初の一致を置換
:s/old/new/
# 現在行のすべての一致を置換
:s/old/new/g
# ファイル全体のすべての一致を置換
:%s/old/new/g
# 確認しながら置換(y: 置換, n: スキップ)
:%s/old/new/gc
練習問題
問題 1
次の手順を試してみてください。
vim /tmp/vim-practice.txtでファイルを開くiでインサートモードに入り、以下の3行を入力するLinux is powerful. Vim is an editor. Practice makes perfect.Escでノーマルモードに戻る:wqで保存して終了するcat /tmp/vim-practice.txtで内容を確認する
解答・操作手順を見る
# ファイルを開く
vim /tmp/vim-practice.txtVim が開いたら:
iキーを押してインサートモードへ- テキストを入力(Enterで改行)
Escを押してノーマルモードへ:wqと入力してEnter
確認:
cat /tmp/vim-practice.txt
# Linux is powerful.
# Vim is an editor.
# Practice makes perfect.問題 2
/tmp/vim-practice.txt を再度開き、次の操作をしてください。
- 2行目(
Vim is an editor.)にカーソルを移動する ddで2行目を削除する- ファイルの末尾に移動し(
G)、pで削除した行を貼り付ける :wqで保存して終了するcatで内容を確認する(行の順番が変わっていること)
解答・操作手順を見る
vim /tmp/vim-practice.txt操作:
jキーで2行目(または2ggと入力)へ移動ddで行を削除(内部バッファに保存される)Gでファイル末尾へ移動pで貼り付け:wqで保存・終了
確認:
cat /tmp/vim-practice.txt
# Linux is powerful.
# Practice makes perfect.
# Vim is an editor.問題 3
/tmp/vim-replace.txt を作成し、以下の内容を書き込んでください。
apple is red
apple is sweet
I like apple
その後、Vim の置換コマンドを使って すべての apple を orange に置換し、保存してください。
解答・操作手順を見る
vim /tmp/vim-replace.txtインサートモードでテキストを入力し Esc で戻ったあと:
:%s/apple/orange/gと入力してEnter。置換が行われたら :wq で保存・終了。
確認:
cat /tmp/vim-replace.txt
# orange is red
# orange is sweet
# I like orange