gabuLog

趣味と考え事をつらつらと

viエディタでファイル編集

概要

viはBlii Joy氏が開発したUNIX標準のテキスト編集用のエディタ。

viエディタを用いると、ファイルの作成・削除を行うことが可能。

Linuxではviエディタの昨日を拡張したVimが提供されていて、最近のRedHatディストリビューションではviはvimの最小構成パッケージあるいはvimエイリアスとして提供されている。

モード

viエディタは3つのモードを切り替えて作業を行う。

viエディタのモード
モード 説明
コマンドモード カーソルの移動、文字や行の削除、コピー、貼り付けなどが行える。このモードがデフォルト。
入力モード(インサートモード) 文字の入力が行える。
ラストラインモード 文章の保存、検索や文字列の置換が行える。

コマンドモード

カーソルの移動、スクロール、文字のコピーや貼り付けなどを行う。

コマンドモードの表示例

コマンドモードの表示例
カーソルの移動
viエディタのカーソル移動のコマンド
コマンド 説明
h ← カーソルを左に1文字移動
j ↓ カーソルを下に1文字移動
k ↑ カーソルを上に1文字移動
l → カーソルを右に1文字移動
0 カーソル行の先頭へ移動
$ カーソル行の末尾へ移動
G 最終行へ移動
nG n行目へ移動
画面のスクロール
画面スクロール
コマンド 説明
ctrl+b 前画面に1画面スクロール
ctrl+f 次画面に1画面スクロール

 

文字の編集

コマンドモードで文字を挿入すること無く、コピーや削除を行える。

文字・単語・行の削除
コマンド 説明
x 1文字削除
nx カーソルから右にn文字削除
dd カーソル行を削除
ndd カーソルからn行削除
dw カーソルから次の単語を削除

(単語は空白があるまでの文字列)

D カーソルから行の最後まで削除
dG カーソル行から最終行まで削除
dH 1行目からカーソル行まで削除

 

文字・単語・行のコピーとペースト
用途 コマンド 説明
コピー yl 1文字のコピー
yw 単語のコピー
yy カーソル行のコピー
nyy カーソル行からn行目までコピー
y0 行頭からカーソルの直前までのコピー
y$ カーソルの位置から行末までのコピー
ペースト P 行のコピーをしている場合は、カーソルの上の行に貼り付け

文字、単語をコピーしている場合は、カーソルの左に貼り付け

p 行のコピーをしている場合は、カーソルの下の行に貼り付け

文字、単語をコピーしている場合は、カーソルの右に貼り付け

 

入力モード(インサートモード)

ファイル内に文字を入力することができる。

インサートモードの表示例

インサートモードの表示例
インサートモードの切替方法

インサートモードにはコマンドモードからコマンドを入力することで切り替えることができる。

インサートモードに切り替えるコマンド
コマンド 説明
i カーソルの前に文字を挿入
a カーソルの後に文字を挿入
o カーソル行の下に新しい行を作成し、文字を挿入
I iと同じ
A aと同じ
O oと同じ

ラストラインモード

テキストの保存や終了、文字列の置換と検索を行える。

ラストラインモードの表示例

同じラストラインモードの表示例
ファイルの保存・終了
ファイルの保存・終了に関するコマンド
用途 コマンド 説明
保存 :w ファイル名を変更せずにそのまま保存
:w! ファイル名を変更せずに強制的に保存
:w ファイル名 ファイル名を変更して保存(もしくは新規保存)
終了 :q ファイルを保存せずに終了
:q! ファイルを保存せずに強制的に終了
保存して終了 :wq ファイルを保存して終了
:wq! 強制的にファイルを保存して終了
:wq ファイル名 ファイル名を指定して保存して終了
その他 :! コマンド viから抜けずにコマンドを実行
:e! 編集内容を破棄し、ファイルを再読込する
文字列の検索
文字列を検索するコマンド
コマンド 意味
/文字列 現在のカーソル位置からファイルの末尾に向かって検索
?文字列 現在のカーソル位置からファイルの先頭に向かって検索
n 次の検索
N 前の検索

 

その他の編集に便利なコマンド

ちょっとした便利なコマンド

編集に便利なコマンド
コマンド 説明
u 最後に実行した編集の取消
. 最後に実行した編集の繰り返し
~ カーソル上の文字を大文字・小文字切り替える

viエディタの設定

viエディタには、有効になっていない便利なオプション機能が備わっている。

オプションを設定したり、初期設定を変更したりすることができる。

オプション機能の設定コマンド
コマンド 説明
:set オプション オプション機能の設定
:set no オプション オプション機能の解除

 

オプション機能
オプション 設定
number 行番号を表示
ignorecase 大文字小文字を区別しない
list タブや行末文字等通常表示されていない文字を表示
all 全てのオプションを表示

viでオプションの実行例

viでオプションの実行例

まとめ

viエディタを利用する場合は、今どういうモードなのかを理解していないと思いもしない操作で混乱することがあります。

また、コマンドやオプションなども多々存在するためよくあるコマンドだけ理解して使い慣れるようにしたほうが良いかもしれません。

モードの遷移とコマンドの種類について理解して使うようにしましょう。