4

で表される以下の vim ウィンドウで、関数からに対するvisible areaの水平位置を取得するにはどうすればよいですか?XY

Y------------------------+
1 File contents          |
|                        |
|   +-X--------------+   |
|   |4|              |   |
|   |5| Visible area |   |
|   |6|              |   |
|   +-+--------------+   |
$    ^                   |
+----|-------------------+
     \
       line numbers

たとえば、ウィンドウが 4 行下にスクロールされるように、の相対位置は4 です。を使用して、これをゼロベースのインデックスとして取得できます。XYline("w0") - 1

特定の瞬間にウィンドウが右方向にスクロールされる列数を確認するにはどうすればよいですか? 試してみましvirtcol(".") - wincol()たが、カーソルが全角文字の上にある場合、それだけでは少しずれます。

4

3 に答える 3

0

数値列の幅が必要な場合は、 を使用しますmax([len(line('$')), &numberwidth])+1

「横位置」とは?wincol()はウィンドウ内の水平位置、col(".")は行頭からのバイトオフセット、 はstrchars(getline('.')[:(col('.')-1)])行頭からの Unicode コードポイントの数、 は行頭からのlen(split(getline('.')[:(col('.')-1)], '.\@='))文字数です。

于 2012-10-24T10:20:34.980 に答える