vim 有没有办法知道我在最左边的分割?

vim 有没有办法知道我在最左边的分割?

我想检测我是否处于最右(或左、上、下)分割。换句话说,什么时候ctrl-w h都无济于事。有没有办法做到这一点?

答案1

只有winnr(),这是一个连续编号;即您只能检查左上角和右下角的窗口,但不能检查确切的窗口关系。如果您在映射/脚本中需要此信息,则必须完全按照您的描述进行操作:

function! IsLeftMostWindow()
    let curNr = winnr()
    wincmd h
    if winnr() == curNr
        return 1
    endif
    wincmd p " Move back.
    return 0
endfunction

编辑: winnr('$') 是一种特殊情况,它返回当前选项卡中的最高索引。因此,如果 winnr() == winnr('$'),则您位于最右下角(或唯一的)窗口。

答案2

如果您在 中使用分屏vim,您将在所有分屏的底部看到一个带有文件名的栏(以及有关光标位置的信息)。在活动窗口中,该栏中的文本以粗体显示。因此,通过检查粗体文本,您可以立即看到您激活了哪个拆分。

答案3

答案是win_screenpos({nr})

要测试窗口 3 是否位于最左侧,if win_screenpos(3)[1] == 1.
要测试当前窗口是否位于最顶层,if win_screenpos(0)[0] == 1.

相关内容