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

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

コマンドラインでテキストファイルを編集するviコマンドについて解説します。

検証環境

viコマンド

viコマンドは“テキストファイルの編集エディタを起動するコマンド”です。

viコマンドによって起動したエディタを一般的に『viエディタ』と呼び、キーボードで操作してファイルを編集します。

基本書式

$ vi [ファイルパス]

引数

ファイルパス

ファイルパスは編集対象ファイルのパスです。

パスのファイルが存在しない場合、新規ファイルを作成しますが、エディタで保存しないとデータとして残らないため注意が必要です。

viエディタの操作

基本的な操作方法をサンプルで解説します。

viエディタの起動

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

$ vi memo.txt

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

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

編集モード

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

起動直後はコマンドモードですが、この2つのモードを切り替えてファイルの編集を行います。

コマンドモード

コマンドモードはviエディタでコマンドを入力するモードです。

コマンドには文字削除や文字検索、コピー&ペースト、保存、エディタの終了などがあります。

インサートモード

インサートモードは文字入力を行うモードです。
※ 入力モードとも呼ばれます。

文字入力

文字の入力はインサートモードに切り替えます。

切り替え方法はいくつかありますが、ここでは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をペーストする場合は次のようになります。

ペースト(挿入)する行の1つ上の行にカーソルを合わせる。

pキーを入力します。

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

保存

ファイルを保存するには:wコマンドを使用します。

サンプルを保存する場合次のようになります。

:wを入力します。

エンターキーで確定します。

左下に保存メッセージが表示されれば完了です。

viエディタの終了

viエディタを終了するには:qコマンドを使用します。

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


以上がviエディタの基本的な操作方法です。

viエディタコマンド

viエディタにはファイル編集に役立つ様々なコマンドがあります。

上記で解説したコマンドも含め、以下にまとめてご紹介します。

カーソル移動

コマンド 内容
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エディタの設定

viエディタの主な操作方法はキーボードです。

慣れるとGUIエディタよりも効率が良いとも言われますが、GUIのエディタが主流の近年では使いづらく感じることがあります。

そのため、使いやすくするにはviエディタの設定を行うことが推奨です。

マニュアル

コマンドの仕様(主な処理やオプション・引数など)は環境により異なる場合がございます。

利用環境での仕様は『コマンドのマニュアルを表示する』manコマンド等で確認しましょう。