テキスト編集 初級

vimの基本操作と編集テクニック

Linuxで広く使われるテキストエディタvimの基本的な使い方を学ぶ。モードの概念から基本的な編集操作、保存・終了まで丁寧に解説する

vimはLinux環境で広く使われているテキストエディタです。最初は戸惑いやすいですが、基本操作を覚えると非常に効率よくファイルを編集できます。サーバー上での設定ファイル編集など、実務でも欠かせないツールです。

vimの起動と終了

まずは vim を起動してみましょう。

vim myfile.txt

ファイルが存在しない場合は新規作成されます。

終了コマンド(最初に覚えるべきこと)

vimを終了する方法を先に覚えておくと安心です。Esc キーを押してノーマルモードに戻ってから、以下のコマンドを入力します。

コマンド動作
:q終了(変更がない場合)
:q!変更を破棄して強制終了
:w保存(終了しない)
:wq保存して終了
ZZ保存して終了(:wq と同じ)

vimの「モード」という概念

vimが初心者に難しく感じられる最大の理由はモードの存在です。vimには主に以下のモードがあります。

ノーマルモード ──→ インサートモード
(移動・コマンド)   (文字入力)
        ↑                  │
        └──────── Esc ─────┘

ノーマルモード(Normal Mode)

vimを起動すると最初にこのモードになります。文字を入力するのではなく、カーソルの移動やコマンドを実行するためのモードです。

インサートモード(Insert Mode)

実際に文字を打ち込めるモードです。ノーマルモードから以下のキーで切り替えます。

キー動作
iカーソルの前から入力
aカーソルの後ろから入力
I行の先頭から入力
A行の末尾から入力
o現在行の下に新しい行を開いて入力
O現在行の上に新しい行を開いて入力

インサートモードから抜けるには Esc キーを押します。


カーソルの移動(ノーマルモード)

ノーマルモードでは矢印キーも使えますが、以下のキーを覚えると手をホームポジションから動かさずに素早く移動できます。

    k

h ← → l

    j
キー移動先
h左へ1文字
l右へ1文字
j下へ1行
k上へ1行
w次の単語の先頭へ
b前の単語の先頭へ
0行の先頭へ
$行の末尾へ
ggファイルの先頭へ
Gファイルの末尾へ
5G5行目へジャンプ

基本的な編集操作(ノーマルモード)

削除

キー動作
xカーソル位置の1文字を削除
dd現在の行を丸ごと削除
dwカーソル位置から次の単語まで削除
d$カーソル位置から行末まで削除
3dd現在行から3行削除

コピーと貼り付け

vimではコピーを「ヤンク(yank)」と呼びます。

キー動作
yy現在行をコピー(ヤンク)
3yy現在行から3行コピー
pカーソルの後ろに貼り付け
Pカーソルの前に貼り付け

取り消しとやり直し

キー動作
u直前の操作を取り消す(Undo)
Ctrl+r取り消した操作をやり直す(Redo)

検索と置換

検索

ノーマルモードで / に続けて検索文字列を入力します。

/検索したい文字列  ← Enterで検索開始
キー動作
/word「word」を前方(下方向)検索
?word「word」を後方(上方向)検索
n次の検索結果へ
N前の検索結果へ

置換(コマンドモード)

: を入力するとコマンドモードになります。置換は以下の形式で行います。

:s/古い文字/新しい文字/     ← 現在行の最初の1個を置換
:s/古い文字/新しい文字/g    ← 現在行のすべてを置換
:%s/古い文字/新しい文字/g   ← ファイル全体のすべてを置換
:%s/古い文字/新しい文字/gc  ← ファイル全体を確認しながら置換

例:ファイル全体の errorwarning に置換する場合:

:%s/error/warning/g

実用的なテクニック

行番号の表示

:set number

シンタックスハイライトの有効化

:syntax on

複数ファイルの同時編集

vim file1.txt file2.txt

ファイル間の切り替えは :next(次のファイル)と :prev(前のファイル)で行います。


実際に操作してみよう

以下の手順で基本操作を練習してみてください。

# 練習用ファイルを作成して開く
vim practice.txt
  1. i を押してインサートモードに入る
  2. 以下のテキストを入力する:
    Hello, vim!
    This is the second line.
    Let's practice editing.
  3. Esc を押してノーマルモードに戻る
  4. gg で先頭行に移動し dd で1行削除する
  5. u で削除を取り消す
  6. /second で「second」を検索する
  7. :wq で保存して終了する

練習問題

問題1

/etc/hostname ファイルの内容を vim で開き、確認した後、変更せずに終了してください。

問題2

新しいファイル hello.sh を作成し、以下の内容を入力して保存してください。

#!/bin/bash
echo "Hello, World!"

問題3

次の内容が書かれたファイル sample.txt があるとします。

apple
banana
cherry
banana
apple

このファイルを vim で開き、コマンドモードを使ってすべての bananagrape に置換し、保存してください。


練習問題の答え

問題1の答え

vim /etc/hostname

内容を確認した後、Esc を押してノーマルモードに戻り、:q と入力して Enter を押します。変更がないため :q! でなく :q で終了できます。

問題2の答え

vim hello.sh
  1. i でインサートモードに入る
  2. 上記の内容を入力する
  3. Esc でノーマルモードに戻る
  4. :wq で保存して終了する

問題3の答え

vim sample.txt

ファイルを開いた後、コマンドモードで以下を入力します。

:%s/banana/grape/g

確認後、:wq で保存して終了します。結果は以下のようになります。

apple
grape
cherry
grape
apple