如何确定vim中的水平滚动位置
在下面的vim窗口中,由如何确定vim中的水平滚动位置,vim,Vim,在下面的vim窗口中,由可见区域表示,如何从函数中获取X相对于Y的水平位置 Y------------------------+ 1 File contents | | | | +-X--------------+ | | |4| | | | |5| Visible area | | | |6| | | | +-+--------------+
可见区域
表示,如何从函数中获取X
相对于Y
的水平位置
Y------------------------+
1 File contents |
| |
| +-X--------------+ |
| |4| | |
| |5| Visible area | |
| |6| | |
| +-+--------------+ |
$ ^ |
+----|-------------------+
\
line numbers
例如,X
相对于Y
的垂直位置是四行,因为在窗口中向下滚动了四行。我可以用行(“w0”)-1
将其作为一个从零开始的索引
I如何确定在给定时刻向右滚动窗口的列数?我已经尝试了
virtcol(“.”-wincol()
,但是如果光标位于一个双宽度字符上,这一点就稍微有点不合适了。如果您想要数字列宽,请使用max([len(line('$),&numberwidth])+1
“水平位置”是什么意思
wincol()
是窗口中的水平位置,col(“.”
是从行开始的字节偏移量,strcars(getline(‘.)[:(col(‘.)-1)]
是从行开始的unicode码点数,len(split(getline(‘.)[:(col(‘.)-1)],“\@=”)
是从行首开始的字符数。不幸的是,vim没有更直接的方法来实现这一点,但下面的方法可以实现
let cursor_pos = getpos('.')
normal g0
let scroll_x = col('.')
setpos('.', cursor_pos)
诀窍是
g0
运动,它将光标移动到窗口的左侧,从那里我们可以得到当前光标列。这里有一个不修改光标位置的解决方案:
winsaveview().leftcol
在最基本的示例中,假设我只想在状态行中显示类似于显示430的第3-83列的
,以指示屏幕左侧或右侧有隐藏数据。