【コマンドライン】テキストファイルの操作 [ vi ]

【コマンドライン】テキストファイルの操作 [ vi ]

コマンドラインでテキストファイルを編集するviコマンドをご紹介します。

※ 本記事の実行例はMacOSになります。ご利用の環境により異なる場合がございますのでご注意ください。

  • viコマンド

  • エディタの操作

  • エディタコマンド

viコマンド

viコマンドでテキストファイルを編集できます。
実行するとエディタが起動し、キーボードでファイルを編集します。

書式

$ vi [ファイルパス]

引数

ファイルパス

ファイルパスには既存ファイルまたは新規ファイルのパスを入力します。
新規ファイルの場合、エディタで保存後にファイルが作成されます。
保存しないと作成されないためご注意ください。

エディタの操作

実行例で基本的な操作方法をご説明します。

起動

エディタを起動するには次のコマンドを実行します。

$ vi memo.txt

memo.txtの部分はファイル名になりますので、任意の名称で問題ありません。

実行するとエディタ画面が開きます。

編集モード

エディタにはコマンドモードとインサートモードの2種類のモードがあります。

コマンドモード

コマンドモードは文字入力以外の編集を行います。
文字削除や文字検索、コピー&ペースト、保存、エディタ終了などが行えます。

インサートモード

インサートモードは文字入力の編集を行います。
※ 入力モードとも呼ばれます。

なお、エディタの起動直後はコマンドモードです。

文字の入力

文字を入力するにはインサートモードに切り替えます。
切り替え方法はいくつかありますが、ここではカーソルの左から文字を入力するiコマンドを使用します。

iキーを入力するとインサートモードに切り替わり、左下に『-- INSERT --』が表示されます。

この状態でキーボードから文字を入力できるようになります。

文字入力の終了

インサートモードからコマンドモードに戻すにはescキーを入力します。
入力すると左下の『-- INSERT --』が消え、インサートモードが終了したことが分かります。

カーソルの移動

カーソルの移動はh,j,k,lキーを使います。

移動先 キー
k
j
h
l

十字キーでの移動も可能ですが、OSやバージョンによって対応していない場合があります。
ご利用の環境でご確認ください。

文字の削除

文字の削除はxコマンドを使用します。
実行例のSAMPLEを削除する場合は次のようになります。

削除したい文字にカーソルを合わせる。

xキーを入力。

Sの1文字が削除されました。
続けて他の文字もxコマンドで削除します。

行のコピー

行のコピーはコマンドモードでyyコマンドを使用します。
実行例のITHACKをコピーする場合は次のようになります。

コピーしたい行にカーソルを合わせる。

yキーを2回入力(yy)。
画面での変化がないため分かりにくいですが、内部的に行がコピーされています。

行のペースト

ペースト(貼り付け)はpコマンドを使用します。
先ほどコピーしたITHACKをペーストする場合は次のようになります。

ペーストしたい行の上の行にカーソルを合わせる。

pキーを入力。

下に行が追加されペーストされました。

保存

ファイルを保存するには:wコマンドを使用します。
:wを入力すると左下に入力内容が表示されます。

エンターキーで確定すると、左下に保存したというメッセージが表示されます。

エディタの終了

エディタを終了するには:qコマンドを使用します。
:qを入力すると左下に入力内容が表示されます。

エンターキーで確定すると、エディタが終了し通常のコマンドラインの画面に戻ります。

以上が基本的な使い方です。

エディタコマンド

コマンドモードの主なコマンドをご紹介します。

カーソル移動

コマンド 内容
k
j
h
l
gg 先頭に移動
G 末尾に移動

インサートモードの切り替え

コマンド 内容
a カーソルの右から入力
A カーソル行の末尾から入力
i カーソルの左から入力
I カーソル行の先頭から入力
o カーソル行の下に新しく行を追加し入力
O カーソル行の上に新しく行を追加し入力

削除

コマンド 内容
x カーソルの文字を削除
X カーソルの左の文字を削除
dd カーソルの行を削除(コピーも行う)
D カーソルから右側の文字を削除

コピー&ペースト

コマンド 内容
yy カーソルの行をコピー
p カーソル行の下に新規行を追加しペースト
P カーソル行の上に新規行を追加しペースト

検索・置換

コマンド 内容
/検索文字 文字を検索
n 文字検索で次にマッチした文字へ移動
N 文字検索で1つ前にマッチした文字へ移動
:g/変更元の文字列/s//変更先の文字列/g 文字列を置換

操作の取り消し

コマンド 内容
u 1つ前の操作を取り消す

保存・終了

コマンド 内容
:w 編集内容を保存
:w! 編集内容を強制保存
:q エディタを終了
:q! エディタを強制終了
:wq 編集内容を保存し、エディタを終了

エディタ設定

viエディタはキーボードのみで操作することもあり、GUIのエディタが主流の近年では使いづらく感じることがあります。
使いやすくするにはオプションを設定します。
設定方法は次の記事をご覧ください。

マニュアル

コマンドの詳細やオプションなどは環境により異なる場合がございます。
詳細はmanコマンドで確認しましょう。
manコマンドについては次の記事をご覧ください。