[Linux][command] エディタ_vi

# 入力モード
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| `i` | insert | カーソル前で入力モードに移行 |
| `I` | Insert at beginning | 行頭で入力モードに移行 |
| `a` | append | カーソル後で入力モードに移行 |
| `A` | Append at end | 行末で入力モードに移行|
| `o` | open below | 現在行の下に新しい行を開いて入力モードに移行 |
| `O` | Open above | 現在行の上に新しい行を開いて入力モードに移行 |



# コマンドモード: 入力→コマンド = `Esc`
## カーソル操作
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| `h` | ← left | 左へ1文字移動 |
| `l` | → right | 右へ1文字移動 |
| `k` | ↑ up | 上へ1行移動 |
| `j` | ↓ down | 下へ1行移動 |
| `0` | beginning of line | 行頭へ移動 |
| `$` | end of line | 行末へ移動 |
| `H` | Head of screen | 画面の先頭へ移動 |
| `L` | Low of screen | 画面の最下部へ移動 |
| `gg` | go to the beginning of file | ファイルの先頭へ移動 |
| `G` | go to the end of file | ファイルの末尾へ移動 |
| `nG`<br>`:n` | go to line n | n 行目へ移動 |
| `Ctrl+b` | backward | 1ページ分**前へ**移動 |
| `Ctrl+f` | forward | 1ページ分**先へ**移動 |


## 終了・保存
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| `:q` | quit | 保存せずに `vi` を終了（未保存の変更があるとエラー） |
| `:q!` | quit (force) | 変更を破棄して強制終了 |
| `:w` | write | ファイルを保存 |
| `:wq` <br> `:x` <br> `ZZ` | write & quit | ファイルを保存して `vi` を終了 |
| `:wq!` | write & quit (force) | ファイルを保存して `vi` を強制終了 |


## 編集
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| `yy`<br>`Y` | yank line | カレント位置の`行`をコピー |
| `yw` | yank word | カーソル位置の`単語`をコピー |
| `dd` | delete line | カレント位置の`行`を削除 |
| `dw` | delete word | カーソル位置の`単語`を削除 |
| `x` | delete| カーソル位置の`文字`を削除 |
| `X` | delete backward| カーソル位置の前の`文字`を削除 |
| `p` | put after | カーソル位置の後にバッファの内容を貼り付け |
| `P` | put before | カーソル位置の前にバッファの内容を貼り付け |
| `.` | repeat (dot) | 直前の変更操作を繰り返す |
| `u` | undo | 直前の操作を取り消す |


## 検索・置換
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| `?検索文字列` | backward search | カーソル位置から前方に向かって検索文字列を検索します。 |
| `/検索文字列` | forward search | カーソル位置から後方に向かって検索文字列を検索します。 |
| `n` | next | 検索後、次の一致箇所に移動します。 |
| `N` | previous | 検索後、前の一致箇所に移動します。 |
| `:%s/A/B/` | substitute | 最初に一致したAをBに置換（各行ごとに1か所だけ） |
| `:%s/A/B/g` | substitute globally | 各行のすべてのAをBに置換 |

## シェルコマンドの実行
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| `:r ファイル` | read | ファイルの内容を現在のカーソル位置に挿入する |
| `:! コマンド` | shell command | シェルコマンドを一時的に実行（`vi` を抜けずに使える） |
| `:r! コマンド` | read + shell | シェルコマンドの出力結果をカーソル位置に読み込む |

## 設定
| コマンド | 由来 | 説明 |
|:--|:--|:--|
| :set nu<br>:set number |number |行番号の表示 |
| :set nonu<br>:set nonumber |no numbrt |行番号の非表示 |
| :set ts=タブ幅<br>:set tabstop=タブ幅 |tab stop |タブ幅を数値で指定  |

# 読み取り専用
~~~terminal
$ vi -R ファイル名
~~~

# Ping-t
全般
- [3639_起動アクション](https://mondai.ping-t.com/question_subjects/31/question_sessions/32400273/progressing_questions/496436016)
- [3649_入力→コマンド=Esc](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024881)
- [3650_起動アクション](https://mondai.ping-t.com/question_subjects/31/question_sessions/32200924/progressing_questions/493334519)

入力モード
- [3456_i](https://mondai.ping-t.com/question_subjects/31/question_sessions/32076138/progressing_questions/491415224)
- [3457_a](https://mondai.ping-t.com/question_subjects/31/question_sessions/31916304/progressing_questions/489057815)
- [3459_A](https://mondai.ping-t.com/question_subjects/31/question_sessions/32018863/progressing_questions/490569322)
- [3460_O](https://mondai.ping-t.com/question_subjects/31/question_sessions/32581786/progressing_questions/499228245)

カーソル操作
- [3108_gg](https://mondai.ping-t.com/question_subjects/31/question_sessions/32400273/progressing_questions/496436010)
- [3111_k](https://mondai.ping-t.com/question_subjects/31/question_sessions/30890995/progressing_questions/473266341)
- [3112_0](https://mondai.ping-t.com/question_subjects/31/question_sessions/32076138/progressing_questions/491415228)
- [3113_$](https://mondai.ping-t.com/question_subjects/31/question_sessions/31941533/progressing_questions/489430951)
- [3115_L](https://mondai.ping-t.com/question_subjects/31/question_sessions/30197501/progressing_questions/462632170)
- [3116_G](https://mondai.ping-t.com/question_subjects/31/question_sessions/32400273/progressing_questions/496436009)
- [3117_:5, 5G](https://mondai.ping-t.com/question_subjects/31/question_sessions/31870469/progressing_questions/488372718)
- [3118_Ctrl+f](https://mondai.ping-t.com/question_subjects/31/question_sessions/32018863/progressing_questions/490569331)
- [3119_Ctrl+b](https://mondai.ping-t.com/question_subjects/31/question_sessions/32200924/progressing_questions/493334516)

終了・保存
- [3121_:q!](https://mondai.ping-t.com/question_subjects/31/question_sessions/30521989/progressing_questions/467602314)
- [3122_:w](https://mondai.ping-t.com/question_subjects/31/question_sessions/31541108/progressing_questions/483298471)
- [3123_:wq, :x, zz, :wq!](https://mondai.ping-t.com/question_subjects/31/question_sessions/31869840/progressing_questions/488361813)
- [3362_:w](https://mondai.ping-t.com/question_subjects/31/question_sessions/31600132/progressing_questions/484225490/edit?no_selection=false)

編集
- [3124_dd](https://mondai.ping-t.com/question_subjects/31/question_sessions/32076138/progressing_questions/491415227)
- [3125_p](https://mondai.ping-t.com/question_subjects/31/question_sessions/30197501/progressing_questions/462632169)
- [3127_yy](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024888)
- [3128_x](https://mondai.ping-t.com/question_subjects/31/question_sessions/31223415/progressing_questions/478442918)
- [3292_x](https://mondai.ping-t.com/question_subjects/31/question_sessions/31375489/progressing_questions/480744519)
- [3293_X](https://mondai.ping-t.com/question_subjects/31/question_sessions/31941533/progressing_questions/489430947)
- [3304_yw](https://mondai.ping-t.com/question_subjects/31/question_sessions/32076138/progressing_questions/491415235)
- [3305_u](https://mondai.ping-t.com/question_subjects/31/question_sessions/31969785/progressing_questions/489837023)
- [35655_.](https://mondai.ping-t.com/question_subjects/31/question_sessions/31913990/progressing_questions/489024880)

検索
- [3129_/](https://mondai.ping-t.com/question_subjects/31/question_sessions/31069115/progressing_questions/476102914)
- [3130_?](https://mondai.ping-t.com/question_subjects/31/question_sessions/32400273/progressing_questions/496436008)
- [3131_n](https://mondai.ping-t.com/question_subjects/31/question_sessions/32244301/progressing_questions/494010621)
- [3132_N](https://mondai.ping-t.com/question_subjects/31/question_sessions/31541108/progressing_questions/483298469)
- [3134_:%s/A/B/g](https://mondai.ping-t.com/question_subjects/31/question_sessions/32373028/progressing_questions/496001466)

シェルコマンドの実行
- [3133_:!](https://mondai.ping-t.com/question_subjects/31/question_sessions/32260881/progressing_questions/494259512)
- [3294_:r](https://mondai.ping-t.com/question_subjects/31/question_sessions/32527688/progressing_questions/498427190)


設定
- [3290_:set nonu, :set nonumber](https://mondai.ping-t.com/question_subjects/31/question_sessions/32246633/progressing_questions/494045385)
- [3291_:set ts=, :set tabstop=](https://mondai.ping-t.com/question_subjects/31/question_sessions/32193725/progressing_questions/493221762)

読み取り専用
- [3462_vi -R](https://mondai.ping-t.com/question_subjects/31/question_sessions/32631050/progressing_questions/499948748)