目次
vi
コマンド体系
大きく以下の3つに分けられる
カーソル移動系
テキスト編集
ラインエディタの便利さを提供するexコマンド
テキスト入力系
| コマンド | 内容 |
|---|---|
| i | カーソルの左に文字を挿入 |
| I | カーソル行の行頭に文字を挿入 |
| a | カーソルの右に文字を挿入 |
| A | カーソル行の行末に文字を挿入 |
| o | カーソル行の下の行に空行を作って文字を挿入 |
| O | カーソル行の上の行に空行を作って文字を挿入 |
| c系 | 対象文字列を消して文字を挿入(つまり、変更) |
| C | カーソル位置から行末までを消して文字を挿入 |
カーソル移動
コマンドモードで、以下のキーを押す
- 最初に数値を入力することにより、(3lなど)移動量を指定できる。
位置移動
| Key | 内容 | 補足 |
|---|---|---|
| 0 | 行頭へ | |
| $ | 行末へ | |
| [数値]| | 指定したカラムへ |
内容を考慮した移動
先頭に数値で、指定数分移動
| Key | 内容 | 補足 |
|---|---|---|
| w | 一単語次へ | 特殊記号区切り |
| b | 一単語前へ | 特殊記号区切り |
| W | 一単語次へ | 空白区切り |
| B | 一単語前へ | 空白区切り |
| { | 一段落次へ | 空白区切り |
| } | 一段落前へ | 空白区切り |
| % | 対応した括弧へ | |
| `[任意のアルファベット1文字] | :m alpha でカーソル位置をマーキング |
スクロール
先頭に数値で、指定数分移動
| Key | 内容 | 補足 |
|---|---|---|
| H | 画面上からn行目へ移動 | デフォルト 0 |
| M | 画面中央へ移動 | |
| L | 画面下からn行目へ移動 | デフォルト 0 |
| G | 最終行へ | |
| Ctrl+b | 前ページ | |
| Ctrl+f | 次ページ | |
| Ctrl+u | 半ページ上 | |
| Ctrl+d | 半ページ下 |
検索
コマンドモードで、"/" もしくは、"?" 押下。最下段で検索後を入力してエンターキー押下
| Key | 内容 |
|---|---|
| / | 後方に向かって検索 |
| ? | 前方に向かって検索 |
- 検索後、"n" で同方向に再検索。"N"で逆方向に再検索。
- "*"、"."はメタキャラクタ
viの正規表現
| 文字 | 内容 |
|---|---|
| . | 1文字 |
| * | 前の文字の繰り返し |
| ^ | 行頭 |
| $ | 行末 |
| < | 単語の先頭 |
| > | 単語の末尾 |
| \ | メタキャラクタのエスケープ |
| [CharSet] | CharSetの中の一文字 |
| [^CharSet] | CharSetに含まれない一文字 |
置換
コマンドモードで、
:%s/oldstr/newstr/g
とする。文字列に "/"が含まれる場合、
:%s;oldstr;newstr;g
のように"/"を別の文字に変更する
削除、移動、コピー、取り消し
コマンドモードで、以下を行う
| Key | 内容 | 補足 |
|---|---|---|
| x | カーソルの1文字を削除 | 3xとすると、3文字削除される |
| dd | 1行削除 | 3ddとすると、3行削除される |
| J | 次の行と結合 | |
| v | 範囲選択(文字単位) | 範囲選択しdで、範囲削除 |
| V | 範囲選択(行単位) | 範囲選択しdで、範囲削除 |
| ctrl+v | 範囲選択(矩形) | 範囲選択しdで、範囲削除 |
| p | ペースト | xやddで削除した文字列の貼り付け |
カットアンドペーストの方法
ctrl+v 〜 d で削除した文字列は、バッファに格納される。削除とペーストを組み合わせることでカットアンドペーストを実現
ファイル内容の読み込み
読み込みたい場所にカーソルを移動し、以下
:r filename
保存と終了
| Key | 内容 | 説明 |
|---|---|---|
| w | 保存 | ファイル名を指定して保存する場合、:w filename |
| w! | ファイル内容を強制保存 | |
| wq | ファイル内容を保存して終了 | |
| q! | ファイル内容を保存せず終了 |
文字コード
[文字化け]
文字コードを指定してファイルを開きなおす
:e ++enc=euc-jp
文字コードを変更して保存する
:set fileencoding=cp932
改行コードを変更する
:set fileformat=改行コードの種類(dos, max, unix)
多くは、以下の書籍からのメモです。
非常に丁寧、網羅的に説明されていて、助かります。

YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.