UINX vi との相違点


 ViViは vi クローンではありませんので、あえて vi とは異なる仕様にしている部分や、 工数、バイナリサイズを考えて実装していない部分があります。

 以下、ViViと UNIX vi との相違点に関する説明です。

■ 機能の相違点

  • undo, redo

     vi の undo は1レヴェルのみで、u u とすると元に戻りますが、ViViの undo は回数無制限で、 u u と入力すると、編集操作を2回 undo します。

     たとえば、

            foo bar hogehoge
    

    で foo の位置にカーソルがある場合に、dw dw とし、u u と入力すると vi では、

            hogehoge
    

    となりますが、ViViでは、

            foo bar hogehoge
    

    となります。  ViViでコマンドを再実行する場合は U を入力します。

     

  • 正規表現

     ViViの正規表現では通常の丸カッコは \( \) で指定します。( ) は部分参照、およびORに使用します。この動作は共通プロパティ検索タブの『( ) \( \) の仕様を vi 互換に』で変更することができます。 詳細は正規表現を参照してください。
     また、ViViを初めて使用する時は、共通プロパティの検索タブで『置換文字列でエスケープ文字有効』 オプションをONにしておいてください。そうでないと :s で & や \1 〜 \9 は使用できません。

     

  • map

     ViViには :map は実装されていません。しかし、それに代わる機能として :scr<0-9> #<vi command> があります。
     このコマンドは指定された vi コマンドを Ctrl + 0 〜 9 に割り付けます。たとえば、"scr1#3dd" Return と入力すると Ctrl + 1 を入力するだけで3行削除を行います。

     

■ キー割り当ての相違点

 Windows では Ctrl + Z, Ctrl + X, Ctrl + C, Ctrl + V にそれぞれ undo, cut, copy, paste を割り当てるのが標準です。このため Ctrl + V をコントロールコード入力に割り当てるのはいささか問題があります。
 そこでViViでは以下のようにキーを割り当てています。

 これらのキー割り当てはカスタマイズを行うことで vi と同じにすることができます。

 

■ その他の相違点

  • cw, S などでの$表示

     vi では cw などを行った時に、削除範囲の最後の文字を$で置き換えますが、ViViではその機能はありません。

     

  • shiftwidth

     ViViには shiftwidth が無く、シフトカラム数は tabstop で指定されます。

     tabstop=8, shiftwidth=4 のファイルを編集する場合は、以下の手順により、インデントを変えずに tabstop=4 に変更できます。

    1. :set ts=8 でタブ幅を8にする。
    2. Ctrl + A で全文選択し、「編集」-「文字変換」-「タブ→半角スペース」でタブを半角スペースにする。
    3. :set ts=4 でタブ幅を4にする・
    4. Ctrl + A で全文選択し、「編集」-「文字変換」-「半角スペース→タブ」で半角スペースをタブにする。

     

  • ab

     ViViには ab の機能は実装されていません。代わりに参照入力機能がありますので、 これを使用してください。

■ vi にはない便利な機能

 ViViは vi には無い便利な機能もたくさんあります。ぜひお試しください。

  1. BOX選択モードによる矩形選択でのカット&ペースト、ドラッグ&ドロップ(慣れると便利)。
  2. マウスで行番号部分をクリックまたはドラッグすることによる行単位選択。
  3. 行選択状態で :: と入力すると、その範囲の行番号が自動入力される(実は結構便利)。
  4. C/C++の予約語、コメントを指定色で表示する(ソースがグンと見やすくなります)。