1

新しいプログラムを開始すると、カーソルが最終的に画面の下部に移動します。中心に置いておきたいのですが、vimrcファイルで次のように管理しました。

autocmd InsertEnter * :set scrolloff=9999
autocmd InsertLeave * :set scrolloff=0

しかし、コードに小さな変更を加えると、カーソルが画面の中央にジャンプしてしまい、少し面倒です。vimが上記のコマンドを実行する前に、次の空白行(たとえば5行)の条件をチェックする方法を知りたいset scrolloff. 新しいコードを書くときは、一番下の 5 つの空白行から始めることができます。

4

1 に答える 1

1

カーソルが現在のウィンドウの下部から何行離れているかを判断するには、次を使用できます。

:echo winheight(0) - winline()

したがって、カーソルが最後の 5 行にある場合にのみカーソルを中央にジャンプさせるには、次のように使用できます。

autocmd InsertEnter * if winheight(0) - winline() < 5 | set scrolloff=9999 | endif

空行でどういう条件を考えているのかよくわかりませんが、 で個々の行を確認できますempty(getline(lnum))。また、組み込み関数prevnonblank()/nextnonblank()が役立つ場合があります。

于 2013-09-26T06:43:28.577 に答える