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

関連情報