                        qvi version 0.014
                             28-Mar-2011
                    Copyright (C) 2011 by N.Tsuda
                  mailto: ntsuda@master.email.ne.jp
                       http://vivi.dyndns.org/


■ 概要

qvi は vi コマンドをサポートするテキストエディタです。
vi コマンドは、基本的に (n)vi 相当ですが、Ctrl + V 等 Windows標準キー
バインドと矛盾するものは Windows キー割り当てを優先しています（ViVi的
キーバインド）。


■ ライセンス

qvi は無料で使用できるフリーウェアです。

ソースコードは http://sourceforge.jp/projects/qvi からゲットでき、
ライセンスは基本的にMITライセンスです。
ですので、不自由なGPLと違ってソースコードを自由に再利用可能です。
ただし、作者は不自由で使い勝手の悪いGPLが大嫌いなので、qvi のソース
コードをGPL系のプロジェクトで再利用することを禁止します。

また、qvi にはイラストファイルが含まれていますが、イラストは
MIT ライセンスではありません。
再利用したい場合は以下の著作権者に問い合せてください。
http://www.pixiv.net/member.php?id=220294


■ 謝辞


■ SPR (Software Problem Report)

凡例：● Open, ◎ Fix&Close, ○ notFix&Close

#SPR 状 優 Open     build Close    build  type  概要
---- -- -- -------- ----- -------- -----  ----  ------------------------------------------------------------------
0001 ◎ B  11/02/24 0.000 11/02/24 0.000│ToDo│w をコーディング
0002 ● C  11/02/24 0.000               │問題│起動直後にドックウィジットが正しく表示されない
0003 ◎ B  11/02/24 0.000 11/03/06 0.010│ToDo│ex コマンド履歴参照：文字入力がある場合は、それとマッチするもののみを表示
0004 ◎ C  11/02/24 0.000 11/02/24 0.000│ToDo│アウトプットからタグジャンプ可能にする。for 自動テストでエラーが発生した場合
0005 ◎ C  11/02/24 0.000 11/02/24 0.000│問題│行が折り返している場合に、行番号G が正しく動作しない
0006 ◎ C  11/02/25 0.000 11/02/25 0.000│問題│自動テスト："ifoo" で "foo" が挿入されない
0007 ◎ C  11/02/25 0.000 11/02/25 0.000│ToDo│自動テスト：0x[0-9a-f]+ で16進数を指定可能にする
0008 ◎ C  11/02/25 0.000 11/02/25 0.000│問題│タグジャンプ：ファイルがオープンされていない場合に、指定行にカーソル移動しない
0009 ◎ C  11/02/25 0.000 11/02/25 0.000│Rfct│doViCommand(QChar&) の中でコマンドモード・挿入モード分岐を行うように修正
0010 ◎ C  11/02/25 0.000 11/02/25 0.000│ToDo│自動テスト：失敗した場合は、期待値・実際の値を表示した方がよい
0011 ◎ C  11/02/25 0.000 11/02/25 0.000│問題│i 挿入を2回行い、. を実行すると文字列が2回挿入される
0012 ◎ C  11/02/25 0.000 11/02/25 0.000│ToDo│自動テスト：/ or ? で検索テスト
0013 ◎ C  11/02/25 0.000 11/02/25 0.000│ToDo│自動テスト：# をコメント文字に
0014 ◎ C  11/02/26 0.000 11/02/26 0.000│問題│自動テスト終了時メッセージが直ぐに表示されない場合がある（再現率高）
	対処：QPlainText の viewport()->repaint() で強制再描画した。update() ではうまく行かなかった。
0015 ◎ C  11/02/26 0.000 11/02/28 0.000│ToDo│j k コマンド：カラム位置保存
0016 ◎ C  11/02/26 0.000 11/02/26 0.000│問題│数値i文字列 Esc で、文字列が数値回数挿入されない
0017 ◎ C  11/02/26 0.000 11/02/26 0.000│問題│数値o文字列 Esc で、数値回数改行されない
0018 ◎ C  11/02/26 0.000 11/02/26 0.000│ToDo│d<move> 実装
	結果：おおむね実装した。問題があれば別項目を登録する
0019 ◎ C  11/02/26 0.000 11/02/26 0.000│ToDo│:cls でアウトプットをクリア
0020 ● D  11/02/26 0.000               │ToDo│（モードレスな）コマンド補完ダイアログ
0021 ● C  11/02/26 0.000               │問題│[EOF] 表示位置が下にずれている
0022 ◎ C  11/02/26 0.000 11/02/26 0.000│ToDo│:cd <dir> で<dir>移動、:cd でホームディレクトリ移動
0023 ◎ C  11/02/26 0.000 11/03/04 0.000│ToDo│ファイルオープン時：文字コードを判定し、UTF16に変換して読み込む
	結果：BOM付き UTF-8, UTF-16LE, UTF-16BE と、SJIS のみサポートした。残りは別項目とする
0024 ◎ C  11/02/26 0.000 11/02/26 0.000│問題│行末の単語を dw で削除すると、改行まで削除されてしまう
0025 ◎ C  11/02/26 0.000 11/02/26 0.000│問題│de を実行すると単語末尾の文字が削除されない
0026 ● C  11/02/27 0.000               │問題│選択状態が表示されない
0027 ◎ C  11/02/27 0.000 11/02/27 0.000│ToDo│Cut/Copy/Paste アクションをメニュー・ツールバーに配置
0028 ◎ C  11/02/27 0.000 11/03/06 0.011│問題│編集・未保存状態でビューを閉じても、保存確認ダイアログが出ない
0029 ◎ C  11/02/27 0.000 11/02/27 0.000│問題│d} d{ dH dM dL dG が行単位で削除されない
0030 ◎ C  11/02/27 0.000 11/02/27 0.000│ToDo│:set font=<値> の場合、<値>が数値ならばサイズ、それ以外ならばフォント名とみなす
0031 ● C  11/02/27 0.000               │問題│cw テキスト Esc の直後に undo しても、一度で元に戻らない
0032 ◎ C  11/02/27 0.000 11/02/27 0.000│問題│c$ を実行した時点でカーソルが改行位置にない
0033 ◎ C  11/02/28 0.000 11/02/28 0.000│Rfct│viカーソル移動関数群をクラス化する
	結果：とりあえずクラス化した。まだ全部の機能を実装したわけではない
0034 ◎ C  11/02/28 0.000 11/03/01 0.000│問題│折り返し行があるとき、j k で正しい行に移動しない
0035 ● C  11/03/03 0.000               │問題│表示フォントにより、全角空白の [] 表示が重なる場合があるので、矩形を自前描画した方がよい
0036 ◎ C  11/03/03 0.000 11/03/04 0.000│ToDo│テストスクリプトファイルの文字コード判定を行うようにする
0037 ◎ C  11/03/03 0.000 11/03/04 0.000│ToDo│テストスクリプト実行時に Qt バージョンを表示
0038 ◎ C  11/03/04 0.000 11/03/04 0.000│問題│:e <ファイル名> でファイルをオープン時、カーソルが１行目に設定されない。
0039 ◎ C  11/03/04 0.000 11/03/04 0.000│ToDo│ファイルメニューに MRU 一覧表示
0040 ◯ C  11/03/05 0.000               │ToDo│オープンファイルディレクトリに移動
	結果：キャンセル
0041 ◎ C  11/03/05 0.000 11/03/05 0.000│問題│ツールバー・メニューの undo/redo が有効にならない
0042 ◎ C  11/03/06 0.000 11/03/06 0.010│ToDo│アバウトダイアログ実装
0043 ◎ B  11/03/06 0.010 11/03/06 0.011│問題│Esc で挿入モードを終了できない
0044 ◎ C  11/03/06 0.010 11/03/06 0.011│問題│挿入モードで BackSpace が効かない
0045 ◎ C  11/03/06 0.010 11/03/06 0.011│問題│未保存文書で :q! を実行しても、保存確認ダイアログが表示される
0046 ◎ C  11/03/06 0.010 11/03/06 0.011│問題│空でないEOF行で p で行単位ペーストしたとき、EOF行の前にペーストされてしまう
0047 ◎ C  11/03/07 0.011 11/03/08 0.012│問題│:行番号 Enter で、EOF行より大きい行番号を指定した場合に動作不良
0048 ◎ C  11/03/07 0.011 11/03/08 0.012│問題│:0 Enter で先頭行に移動しない
0049 ◎ C  11/03/07 0.011 11/03/08 0.012│ToDo│:{range}d を実装
0050 ◎ C  11/03/07 0.011 11/03/07 0.012│問題│Ubuntu でのビルドでエラーになるので、imm32.lib のリンクは #ifdef WIN32 の時のみとする
0051 ◎ C  11/03/08 0.011 11/03/08 0.012│ToDo│exコマンド行番号指定：. サポート
0052 ◎ C  11/03/08 0.011 11/03/08 0.012│ToDo│exコマンド行番号指定：$ サポート
0053 ◎ C  11/03/08 0.011 11/03/08 0.012│ToDo│exコマンド行番号指定：+ - サポート
0054 ◎ C  11/03/08 0.011 11/03/17 0.013│問題│EOF行が一部隠れると、EOF行の行番号が表示されない
0055 ◎ C  11/03/08 0.011 11/03/08 0.012│ToDo│exコマンド行番号指定：+ - で . 省略サポート
0056 ◎ C  11/03/08 0.011 11/03/09 0.012│ToDo│:% サポート
0057 ◎ C  11/03/09 0.011 11/03/09 0.012│問題│p の繰り返し回数が効かない
0058 ◎ C  11/03/09 0.011 11/03/09 0.012│ToDo│:s/before/after/[g] をとりあえず実装
0059 ◎ C  11/03/10 0.011 11/03/10 0.012│問題│自動テスト実行時：文書がファイル名を持っている場合は新規文書を作成した方がよい
0060 ◎ C  11/03/10 0.011 11/03/10 0.012│ToDo│「全ての qvi を閉じる」メニュー追加
0061 ◎ C  11/03/10 0.011 11/03/10 0.012│ToDo│:Q で全てのビューを閉じる
0062 ◎ C  11/03/10 0.011 11/03/10 0.012│ToDo│:Q! で全てのビューを強制的に閉じる
0063 ◎ C  11/03/10 0.011 11/03/10 0.012│問題│Sコマンドに繰り返し回数を前置すると、入力文字列が繰り返し回数分挿入されてしまう
	補足：Sの繰り返し回数は、置換行数を示す
0064 ◎ C  11/03/10 0.011 11/03/10 0.012│問題│c<move>コマンドに繰り返し回数を前置すると、入力文字列が繰り返し回数分挿入されてしまう
0065 ◎ C  11/03/10 0.011 11/03/10 0.012│問題│<数値1>d<数値2>w ：<数値1> * <数値2> 個以上の単語が削除されてしまう
0066 ◎ C  11/03/10 0.011 11/03/10 0.012│問題│d2w 実行後に . を実行しても単語が2個削除されない
0067 ◎ C  11/03/11 0.011 11/03/10 0.012│問題│r<数字> が動作不良
0068 ● C  11/03/11 0.011               │問題│xu したときにカーソル位置が削除した文字位置にならない
0069 ◎ C  11/03/11 0.011 11/03/11 0.012│ToDo│MRUファイルアイテムを選択した時、ステータスバーにフルパスを表示する
0070 ◎ C  11/03/16 0.012 11/03/16 0.013│問題│yy コマンドが実装されていない
0071 ◎ C  11/03/16 0.012 11/03/16 0.013│問題│数値x の後の . (repeat command) が動作不良
0072 ◎ C  11/03/16 0.012 11/03/16 0.013│問題│R に繰り返し回数を前置しても無視される
0073 ◎ C  11/03/16 0.012 11/03/16 0.013│問題│iコマンドでTABを挿入し、. (repeat command) を実行すると、TABが挿入されない
0074 ◎ C  11/03/16 0.012 11/03/16 0.013│問題│数値n の数値が効かない
0075 ◎ C  11/03/17 0.012 11/03/17 0.013│問題│111 という行の先頭で 5R= Esc を実行すると ==1 となる。=====11 となるべき
0076 ◎ C  11/03/17 0.012 11/03/17 0.013│問題│改行上で R を実行した場合は改行を置き換えず、挿入した方がよい
0077 ◎ C  11/03/17 0.012 11/03/17 0.013│ToDo│/? 検索：↑↓で検索文字列履歴を参照できた方がよい
0078 ◎ C  11/03/17 0.012 11/03/17 0.013│問題│df文字 を実行すると、文字までではなく文字の直前までしか削除されない
0079 ◎ C  11/03/17 0.012 11/03/17 0.013│問題│$ の後 j k で垂直方向移動したときに、カーソルが行末に移動しない
0080 ◎ C  11/03/17 0.012 11/03/17 0.013│問題│111 という行で 5r= を実行した場合は、===== となるべき
0081 ◎ C  11/03/23 0.013 11/03/23 0.014│問題│f文字 の後 d; を実行すると、文字まで削除されない
0082 ◎ C  11/03/23 0.013 11/03/23 0.014│問題│yf文字 で文字までユンクバッファにコピーされない
0083 ◎ C  11/03/23 0.013 11/03/23 0.014│問題│cc コマンドが動作不良（行置換ではなく、カーソル以降置換になっている）
0084 ◎ C  11/03/24 0.013 11/03/24 0.014│問題│J コマンド：前行末尾、次行先頭の空白類の扱いが nvi と異なる
0085 ◎ C  11/03/24 0.013 11/03/24 0.014│問題│>> << コマンドの .(repeat command) が効かない
0086 ◎ C  11/03/24 0.013 11/03/24 0.014│問題│2>>u の後 . を実行すると右シフトされてしまう
0087 ◎ C  11/03/25 0.013 11/03/25 0.014│問題│L で空のEOF行に移動してしまう
0088 ● C  11/03/25 0.013               │問題│
