試して覚える、vi(vim)コマンド


モード切替

  • モードは2つ
    • 参照モード(標準モード?)
    • 編集モード
  • 編集するぞ!
    • i, I, a, A, o, O
  • やーめた
    • Esc

移動

カーソル移動(参照モードで)

マウスが使えないだけあって手厚い

  • ちょっとずつ
    • j, k, h, l
  • 文字数指定
    • 2j, 5k,…
  • 単語ごと
    • w, b
  • 複数単語
    • 2w, 5b,…
  • はじっこ
    • 0 …… 行頭
    • $ …… 行末
    • G …… EOF(最後)
    • :0 …… SOF(最初)
  • 行ごと
    • Ctrl+d, Ctrl+u
    • 前に数字入力で行数指定
  • 行指定
    • :3 …… 3行目に移動
  • ページ
    • Ctrl+f, Ctrl+b

カーソル移動(編集モードで)

  • 十字キー とか

検索

  • /(スラッシュ)+文字入力+Enter
  • n …… 次を検索
  • N …… 前を検索

編集

ファイル操作

  • :q …… 閉じる
  • :w …… 保存する
  • :q! …… やめる(編集を破棄して閉じる)
  • :w! …… 強制保存(読み取り専用で開いていても)
  • :wq …… 保存して閉じる

編集(参照モードで)

  • コピー(y)
    • yy …… 今の行
    • yj …… 今の行と次の行
    • 3yl …… 今のところから3文字
  • ペースト
    • p,P
  • 切り取り
    • x, 2x
  • 大きく切り取り
    • dd …… 今の行
    • dj …… 今の行と次の行
    • 3dj …… 今のところから3行
    • dw …… 単語
    • 3dw …… 3単語

簡易置換(参照モード→編集モード)

  • s …… 1文字消して編集モード
  • 3s …… 3文字消して編集モード
  • c3l …… 右に3文字消して編集モード
  • cw …… 単語消して編集モード

置換(参照モード)

  • :s/aaa/bbb/ …… その行で「aaa」を「bbb」に1つ置換
  • :s/aaa/bbb/g …… その行で「aaa」を「bbb」にすべて置換
  • :%s/aaa/bbb/ …… カーソルの位置から最初に見つかった「aaa」を「bbb」
  • :%s/aaa/bbb/g ……「aaa」を「bbb」に全置換

その他

マクロ

  • 行頭に「#」を付けてコメント行にする
    • q+1+0+i+#+Esc+j+q
      • 「q」で挟まれたところがマクロ
      • 「1」がマクロを呼び出すキー文字。文字でもいい
      • 「0+i+#+Esc+j」が覚えさせたマクロ
    • 5@1
      • マクロ名「1」を5回実行する(5行の先頭に#が付いた)
  • 行頭にある「#」を削除する
    • q+2+0+x+j+q
    • 5@2

操作

  • .(ピリオド)…… 繰り返し
    • n+.(ピリオド)…… 検索して前のコマンド(置換とか)実行
  • u …… 戻す(WindowsのCtrl+z)
  • Ctrl+r …… やり直し(戻したのを戻さなくする)(WindowsのCtrl+y)

Ctrl+zやっちゃったら

  • 閉じちゃったように見える
  • Ctrl+zには意味がある
    • バックグラウンド実行に切り替える
  • 復旧(元のvi編集画面に戻るだけ)
    • fg(+Enter)
    • jobs(+Enter)でバックグラウンド実行を確認
    • fg 1(+Enter)なら[1]のバックグラウンド実行を再開
  • もちろん、実行中のshellやPythonプログラムをCtrl+zでバックグラウンド実行に切り替えることも可能


Posted by futa