v_G ハック

Ctrl+v で矩形選択して G したとき、カーソルが1桁目に行ってしまうのが嫌だった。
:set nostartofline を設定すればいいわけだが、無意味にソースを改変。
ところでこのオプションを設定してる人はどれくらいいるのだろう。

--- ../src.orig/edit.c	2006-06-24 05:03:37.001000000 +0900
+++ edit.c	2006-09-19 12:50:00.765625000 +0900
@@ -6339,7 +6339,8 @@
 beginline(flags)
     int		flags;
 {
-    if ((flags & BL_SOL) && !p_sol)
+    if ((VIsual_active && VIsual_mode == Ctrl_V)
+         || ((flags & BL_SOL) && !p_sol))
 	coladvance(curwin->w_curswant);
     else
     {

日本語版ヘルプの 'startofline' には

(訳注: 実際の動作はドキュメントとかなり違う。移動先が1列目の場合と余白
以外の最初の文字の場合が混在している。ただ、オンのときはカーソルが元い
た列を無視して先頭の「方に」移動するのは確か)

と書かれている。
確かに nostartofline していても H, M, L などは1列目に行ってしまうようだ。
ソースを見ると 'startofline' に従ってほしいという意図がうかがえるのだが。バグだろう。