viでよく使うコマンドメモ

vi vi

前提

viは入力コマンドモードがある、入力モードがらコマンドモードに切り替える際はEscを押下する、コマンドモードから入力モードへの切り替え方は下記に記載する。

起動

  • 編集対象のファイルを開く

    vi ファイル名 
    

移動

  • 左に移動

    h
    
  • 右に移動

    l
    
  • 上に移動

    k
    
  • 下に移動

    j
    
  • 画面の最上行に移動

    H
    
  • 画面の中央行に移動

    M
    
  • 画面の最下行に移動

    L
    
  • ファイルの最終行に移動

    G
    
  • ファイルのn行目に移動

    nG
    
  • 行の頭へ移動

    0
    
  • 行の最後へ移動

    $
    

入力(入力モードへの切り替え)

  • カーソルの右から入力開始

    a
    
  • 行末から入力開始

    A
    
  • カーソルの左から入力開始

    i
    
  • 行頭から入力開始

    I
    
  • 現在の行の下に1行挿入し、その行頭から入力開始

    o
    
  • 現在の行の上に1行挿入し、その行頭から入力開始

    O
    

削除

  • カーソル上の1文字削除

    x
    
  • カーソルの左の文字を1文字削除

    X
    
  • 現在の行を削除(バッファにコピーされる)

    dd
    
  • n 行、削除

    ndd
    
  • カーソル上の一語を削除

    dw
    
  • カーソル位置から指定した字 までを削除

    df 字
    
  • カーソル位置から行の最後までを削除

    d$
    
  • カーソル位置から行の先頭までを削除

    d^
    

検索

  • 文字列 を検索する

    /<文字列>
    
  • 文字列を検索する(逆方向)

    ?<文字列>
    
  • 順方向へ検索する

    n
    
  • 逆方向へ検索する

    N
    

置換

  • カーソル上の1文字を他の1文字に置換

    r
    
  • カーソル上の文字からEscが押されるまでの文字列を置換

    R
    
  • カーソルのある1文字を他の文字列で置換

    s
    
  • 現在の行を他の文字列で置換

    S
    
  • カーソル位置からこの語の最後までを置換

    cw
    
  • カーソル位置から指定した字 までを置換

    cf 字
    
  • カーソル位置から行の最後までを置換

    C
    
  • 直前のsコマンドの繰り返し

    :&, &
    
  • 大文字/小文字を変更する

    ~ (チルダ)
    

カット&ペースト

  • 現在の行をバッファにコピー

    yy
    
  • n 行分をバッファにコピー

    nyy
    
  • 単語をバッファにコピー

    yw
    
  • バッファ内のテキストを挿入(文字、単語はカーソルの右に、行は現在の行の下に挿入される)

    p
    
  • バッファ内のテキストを挿入(挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される)

    P   
    

Undo・Red

  • 直前の操作を取りやめる

    u
    
  • 行全体の操作を取りやめる

    U
    
  • 直前の操作の繰り返し

    .
    

終了

  • 保存して終了

    ZZ
    
  • 上書き保存

    :w(Enter)
    
  • 名前を付けて保存

    :w ファイル名(Enter)
    
  • 保存して終了

    :wq(Enter)
    
  • 保存せずに終了

    :q!(Enter)
    
  • 終了

    :q(Enter要)
    
  • ファイルを開く

    :e ファイル名(Enter要)
    

参考

http://www.ritsumei.ac.jp/~tomori/vi.html
http://hp.vector.co.jp/authors/VA016670/unix/vi_reference.html

おわりに

他にも、コマンドはありますが、個人的によく使うコマンドのみを抜き出して、まとめました。