【vi】たまに使わざるを得ない viのこれだけ覚えとけばなんとかなる知識

f:id:TsuNaMaGuRo:20220303015210p:plain
入力モード
f:id:TsuNaMaGuRo:20220303015122p:plain
編集モード

Linuxサーバー運用してるなら避けられないテキストエディタ、vi

他にもnanoとかもあるけど・・・

無駄なもん入れたくない主義のサーバーは大抵vi以外に選択肢が無いのが実情。

ガッツリ編集するならvscodeからリモート接続するけど、ちょちょいと編集するのにvscodeで接続はなかなか面倒・・・

vscodeディレクトリ移動する度にコイツ信用しますか?といちいち聞いてくるし、だいたい移動する度パスワード入れないといけないし・・・

軽く編集する程度やディレクトリ移動が頻繁にある作業の時はRLogin等のSSHクライアントを使用するほうが手っ取り早い。

そういうときにはviにお世話にならざるを得ないのである。

操作方法&コマンド集

最低限の知識

  1. viには入力モードと編集モードがある。
    • モードは他にもあるけど最低限なら覚える必要はない
    • 最初viでファイルを開いたときは入力モードになっている
  2. コマンドを入力するときは入力モード状態にする
  3. 文字とかを入力したいときは編集モード状態にする
    • 編集モードが普通のテキストエディタと同じ状態で入力モードがvi独自のコマンドを実行できる状態
  4. 特定の文字を入力後エンターを押下するとコマンドを実行可能。
    • ファイル保存等は全てコマンドで行う。以下の表を参照。

前提

  • 以下操作方法&コマンドはカーソルキーとEscキー以外は全て入力モード状態のみで実行可能
  • キーボードにカーソルキーが付いている

超最低限

説明 コマンド
カーソルを移動させる カーソルキー(←↑↓→) 編集モード中でも操作可
編集モードに移行 iキー
編集モード状態から入力モードに戻る Escキー
編集した内容を保存して終了 :wq と入力した後Enterキー
編集した内容を保存しないで終了 :q! と入力した後Enterキー
  • とりあえずはこれだけ覚えとけばファイルを編集して保存ができる。
  • なんかようわからんキーを押してしまったときは迷わず:q!だ。

スピード&作業効率アップ

説明 コマンドと補足
行数を表示させる :set numberと入力した後Enterキー
単語単位でカーソル移動 Ctrlを押下しながらカーソルキー
ファイルの先頭に移動 gg(gキーを連続で2回押下)
ファイルの最終行に移動 Gキー (Shiftキーを押下しながらgキー)
行の先頭に移動 ^キー
行の末尾に移動 $キー
カーソル行をコピー
※なお、この操作のことをviはヤンクと呼ぶ
yy (yキーを連続で2回押下)
カーソル行から下複数行をコピー 【行数】yy (カーソル行含めて下方向3行を対象とするなら3yyと入力)
カーソル行を切り取り dd (dキーを連続で2回押下)
行削除にも使える
カーソル行から下複数行を切り取り 【行数】dd (カーソル行含めて下方向5行を対象とするなら5ddと入力)
ペースト pキー
元に戻す (WindowsのCtrl + zに該当する処理) uキー
なおCtrl + zを間違えて押下するとviが閉じてしまうが慌てず冷静にfgコマンドを入力すれば元に戻る
文字列を検索(下方向) /【検索文字列】を入力した後Enterキー
hogeを検索するなら/hoge⇒Enterキー
検索結果が複数ある場合は下方向に一番近い候補に飛ぶ
文字列を検索(上方向) ?【検索文字列】を入力した後Enterキー
hogeを検索するなら?hoge⇒Enterキー
検索結果が複数ある場合は上方向に一番近い候補に飛ぶ
↑の検索でヒットした場所にカーソルを移動させる nキー
  • 書きだしたら意外と多くなってしまった

まあ言うて

これからviにお世話にならざるを得ない状況は減っていきそうですけどね・・・

ほぼ間違いなくサーバーレスが基本の時代になっていくだろうからなぁ~