viエディタ
Linuxで古くから使われているエディタの一つで、ほぼ全てのUNIX系OSに付属しているものです。
viでは「コマンドモード」と「テキスト入力モード」に分かれており、カーソルの移動からカット・コピー・ペースト等のテキスト入力以外の操作をコマンドモードで行い、文字の入力をテキスト入力モードにて行います。vi起動時はコマンドモードになっており、テキスト入力モードに移行するには「i」キーを押すことで切り替わります。また、テキスト入力モードからコマンドモードに戻すには「Esc」キーを押せば切り替わります。
| vi [ファイル名] | ブイアイ |
テキストエディタ
主なオプション
+:最終行にカーソルを合わせてファイルを開く
+n:n行目にカーソルお合わせてファイルを開く
-R:読みとりモードでファイルを開く |
コマンドモード
このモードでは上記した通り、カーソル移動やテキストの編集、ファイルの保存を行えます。また、正規表現を用いることもできます。
ファイルの操作とviの終了
| :w ファイル名 | 新規に保存。ファイル名を省略すると上書き保存 |
| :wq | 保存して終了 |
| ZZ | 保存して終了 |
| :x | 保存して終了 |
| :e ファイル名 | ファイルを開く |
| :r ファイル名 | カーソルの次の行にファイルを挿入する |
| :e! | 最後に保存した内容に復帰する |
| :q | 保存せずにviの終了 |
| :q! | 編集内容を保存せずにviの強制終了 |
カーソルの移動
| j | カーソルを下へ移動 |
| k | カーソルを上へ移動 |
| h | カーソルを左へ移動 |
| l | カーソルを右へ移動 |
| nj | カーソルをn行下へ移動 |
| nk | カーソルをn行上へ移動 |
| nh | カーソルをn文字左へ移動 |
| nl | カーソルをn文字右へ移動 |
| G | ファイルの最終行へ移動 |
| nG | ファイルの先頭からn行目に移動 |
| ^ | 行頭へ移動 |
| $ | 行末へ移動 |
| H | 画面の先頭へ移動 |
| L | 画面最終行へ移動 |
| M | 画面中央へ移動 |
| nH | 画面上からn行目へ移動 |
| nL | 画面下からn行目へ移動 |
| :n | n行目へ移動 |
| [Ctrl]+ b | 上に1画面スクロール |
| [Ctrl]+ f | 下に1画面スクロール |
| [Ctrl]+ u | 上に1/2画面スクロール |
| [Ctrl]+ d | 下に1/2画面スクロール |
| [Ctrl]+ y | 上に1行スクロール |
| [Ctrl]+ e | 下に1行スクロール |
| z [Enter] | カーソル行を画面先頭行に移動 |
| z. | カーソル行を画面中央行に移動 |
| z- | カーソル行を画面最下行に移動 |
テキスト入力モードへ移行
| i | カーソルの前から挿入 |
| a | カーソルの後ろから挿入 |
| o | カーソルの次の行に挿入 |
| I | 行頭から挿入 |
| A | 行末に挿入 |
| O | カーソルの前の行に挿入 |
| R | カーソル位置から上書き |
文字編集
| r | カーソル位置の1文字を置き換え |
| x | カーソル位置の1文字の削除 |
| nx | カーソル位置からn文字の削除 |
| Y | カーソル行をコピー |
| yy | カーソル行をコピー |
| y カーソル移動コマンド | カーソル位置から移動コマンドで指定した位置までコピー |
| nyy | カーソル位置からn行コピー |
| y^ | 行頭からカーソル位置の前までをコピー |
| y$ | カーソル位置から行末までをコピー |
| p | カーソルの後方(もしくは下の行)にコピーされた文字(行)の張り付け |
| d カーソル移動コマンド | カーソル位置から移動コマンドで指定した位置まで削除 |
| dd | カーソル行の削除 |
| ndd | カーソル位置からn行削除 |
| D | カーソル位置から行末までの削除 |
| /文字列 | 文字列をカーソル位置から以降を検索 |
| ?文字列 | 文字列をカーソル位置から以前を検索 |
| n | 次の検索文字を下向きに検索 |
| N | 次の検索文字を上向きに検索 |
| ~ | 大文字・小文字の変換 |
| :s/文字列1/文字列2 | カーソル行の文字列1を文字列2に置き換える(複数ある場合は行頭に近い文字列1のみ置き換え) |
| :s/文字列1/文字列2/g | カーソル行のすべての文字列1を文字列2に置き換える |
| :%s/文字列1/文字列2/g | ファイル内のすべての文字列1を文字列2に置き換える |
※置き換えコマンドにて、/gを/gcとする(cをつける)と対話的に置き換えが行われる(確認後置き換え)。置き換える場合(YES)はy、置き換えない場合(NO)はnを答える。