矩形選択時のputハック

サクラエディタふぁんくらぶ part7 >>654 より

ちなみに俺はサクラの矩形処理ではコピペ関連が好きだな。
vimで出来るかどうかは知らんが、1行コピーして4行矩形選択して張り付けると4行分張り付けられたり
矩形選択してコピーしたものは、矩形選択せずに張り付けても、矩形貼り付けになったりね。

vim ではできないのでできるようにした。
文字単位でヤンクして矩形選択してプットすると4行分プットされる。

--- ../src.orig/normal.c	Sat Apr 29 22:11:18 2006
+++ normal.c	Sun Sep 10 12:16:32 2006
@@ -9002,6 +9002,19 @@
 #endif
 	do_put(cap->oap->regname, dir, cap->count1, flags);
 
+	if (was_visual && VIsual_mode == Ctrl_V && get_reg_type(cap->oap->regname, NULL) == MCHAR)
+	{
+	    int visualsize = cap->oap->end.lnum - cap->oap->start.lnum; 
+	    int li;
+
+	    for (li=0; li<visualsize; li++)
+	    {
+		curwin->w_cursor.lnum += 1;
+		curwin->w_cursor.col = cap->oap->start_vcol;
+		do_put(cap->oap->regname, dir, cap->count1, flags);
+	    }
+	}
+
 #ifdef FEAT_VISUAL
 	/* If a register was saved, put it back now. */
 	if (reg2 != NULL)

[追記:2006-09-11]
矩形選択して I" で同等のことはできるなあ。


矩形選択に関しては vim よりサクラの方が優れていると思う。
というか全体的に vim のヤンク・プットは使いづらい。
p と P の使い分けもその1つだ。
これはカーソルは常に文字の上に置かれるものという考えに起因する。EmacsWindows のエディタのように、カーソルは文字と文字の間を指すものと定義すればよかったのだ。