編集コマンド


■ 編集コマンド

 編集を行うコマンドの一覧を示す。コマンドの直後に <move> とあるのは、 移動コマンドを接尾辞としてとることが出来ることを示す。たとえば、d$ はカーソル位置から行末までを削除する。
 ヤンクバッファはデフォルト(名前なし)に加え、a-z を指定することが可能である。 また、:py でそれらの内容を確認することができる。

【注意】 redo は直前の編集操作を繰り返す。筆者がとても気に入っている vi の機能のひとつである。挿入操作も redo の対象となるが、 ViViは挿入中にカーソルキーでカーソルを自由に移動することができるので、どこまでを redo の対象にするかが問題である。 現状は、カーソル移動を行った場合、挿入文字列のレコーディングを中止するという仕様にした。 本物の vi 使いの人は文字挿入中にカーソル移動キーなんか使用しないだろうから、そんなに悪くない仕様と思っている。

【注意】 {c|d|v|y}<move> で、処理対象範囲が複数(論理)行に渡る場合、 処理は行単位となる。ただし、/?nN`<a-z>%}{ は常に文字単位で処理を行う。 >, < は移動コマンドに依らず常に論理行単位で処理を行う。

──────────────────────────────────────
      .             redo
      @<a-z>        ヤンクバッファの内容をコマンドとして実行
      @@            @ コマンドを繰り返す
      ~             半角英字の大文字小文字変換
      &             直前に実行した :s コマンドを再実行
    * >>            右シフト(インデント)
      ><move>       右シフト(インデント)
    * <<            左シフト(逆インデント)
      <<move>       左シフト(逆インデント)
    * a             追加(カーソル位置直後から挿入)
    * A             行末に追加
    * cc            行を修正
    * c<move>       現カーソル位置から移動後のカーソル位置までを修正
    * C             カーソル位置から行末までを修正(c$)
    * dd            行削除
      d<move>       現カーソル位置から移動後のカーソル位置までを削除
      D             カーソル位置から行末までを削除(d$)
    * i             カーソル位置に挿入
    * I             最初の非空白文字の位置に挿入
    * J             複数行を1行にする
    * o             直後に行をオープン
    * O             直前に行をオープン
    * p             カーソル直後、またはカーソル行の次にヤンクバッファの
                    内容をペースト
    * P             カーソル直前、またはカーソル行の前にヤンクバッファの
                    内容をペースト
    * r             文字置換(全角文字は不可)
      R             カーソル位置から行末までを置換
    * s             文字を修正
    * S             行を修正
      u             undo
      U             undo の undo(ViViでの Redo)
      vv            カーソル位置の単語を選択
    * v<move>       現カーソル位置から移動後のカーソル位置までを
    * V             行選択
    * x             カーソル位置の1文字消去
    * X             カーソル位置の直前文字を消去
    * y<move>       現カーソル位置から移動後のカーソル位置までを
                    ヤンクバッファにコピー
    * yy            行をヤンクバッファにコピー
    * Y             行をヤンクバッファにコピー
    * z{Return|-|.} 画面をスクロール
──────────────────────────────────────