open_line について

vim の 'o' と 'O' にカウントを与えると、その後のインサートモードで入力されたテキストがn回挿入される。
しかしそんな操作をしたくなることがどれだけあるだろうか。私ならそんなときは o か O でまず1行挿入し、
その行を yy でヤンクして [count]p で欲しい行数だけプットする。
むしろ、[count]o では n行の空行を挿入してインサートモードを開始してほしい。
なのでそのようにしてみた。

--- ../src.orig/normal.c	Sat Apr 29 22:11:18 2006
+++ normal.c	Sat Oct 21 22:46:18 2006
@@ -8078,9 +8078,15 @@
 #endif
 		    0, 0))
 	{
+	    int i;
+
+	    for (i=0; i<cap->count1 - 1; i++)
+		open_line(FORWARD,
+			     has_format_option(FO_OPEN_COMS) ? OPENLINE_DO_COM :
+			     0, 0);
+
 	    /* When '#' is in 'cpoptions' ignore the count. */
-	    if (vim_strchr(p_cpo, CPO_HASH) != NULL)
-		cap->count1 = 1;
+	    cap->count1 = 1;
 	    invoke_edit(cap, FALSE, cap->cmdchar, TRUE);
 	}
     }

ところでこのソース中のコメントを見ても分かるとおり、'cpoptions' にフラグ '#' が入っていると、
カウントが無視されてしまう。この動作が POSIX で規定された仕様らしい。しかし nvi, elvis, vile
どれもカウントを受け付ける。POSIX の vi 仕様はオリジナルの vi とも異なる箇所があるらしいが、
いったいどうやって決めたのだろう?