ヤンクしたテキストもレジスタ1〜9に入れるハック

オリジナルの vi にはレジスタ 0 は存在せず、ヤンクしたテキストは
無名レジスタにのみ保存されるらしい。
小削除用レジスタ "- もないらしい。
どうもレジスタの挙動は複雑だと思っていたら、そんな理由があったのか。
一応、以下のパッチですべてのヤンク・削除したテキストがレジスタ0〜9
に保存され、シフトしていくようになる。
大してテストしていないので、バグ・副作用の可能性はある。

--- ../src.orig/ops.c	Mon May  1 00:13:44 2006
+++ ops.c	Sun Aug  6 20:31:19 2006
@@ -1629,12 +1629,12 @@
 	if (oap->regname != 0 || oap->motion_type == MLINE
 				   || oap->line_count > 1 || oap->use_reg_one)
 	{
-	    y_current = &y_regs[9];
-	    free_yank_all();			/* free register nine */
-	    for (n = 9; n > 1; --n)
-		y_regs[n] = y_regs[n - 1];
-	    y_previous = y_current = &y_regs[1];
-	    y_regs[1].y_array = NULL;		/* set register one to empty */
+	    //y_current = &y_regs[9];
+	    //free_yank_all();			/* free register nine */
+	    //for (n = 9; n > 1; --n)
+		//y_regs[n] = y_regs[n - 1];
+	    //y_previous = y_current = &y_regs[1];
+	    //y_regs[1].y_array = NULL;		/* set register one to empty */
 	    if (op_yank(oap, TRUE, FALSE) == OK)
 		did_yank = TRUE;
 	}
@@ -2719,6 +2719,17 @@
     char_u		*p;
     char_u		*pnew;
     struct block_def	bd;
+
+    {
+	int n;
+
+	y_current = &y_regs[9];
+	free_yank_all();	
+	for (n = 9; n > 0; --n)
+	    y_regs[n] = y_regs[n - 1];
+	y_previous = y_current = &y_regs[0];
+	y_regs[0].y_array = NULL;
+    }
 
 				    /* check for read-only register */
     if (oap->regname != 0 && !valid_yank_reg(oap->regname, TRUE))