Vim

在vim中自然滾動到最後一行的末尾

  • November 25, 2021

我是一個 vim 新手,但我很難找到資源來幫助我解決這個問題。

當我將游標移動到文件的底部時,我希望它繼續越過最後一行,最好直到最後一行位於我的視窗頂部,但也可以無限期地進行。我目前的解決方案包括放入set scrolloff=20my~/.vimrc然後做G+zz到底部。但是如果我向上和向下滾動,我會被最後一行再次貼到底部。

我知道因為文件後面沒有換行符,所以它實際上沒有任何東西可以滾動,但是我無法在視窗中間的底線處編輯我的文件,這很煩人。

所以最終我想要它,當我在底線時,我可以按住j它,它只會向下滾動。有沒有辦法做到這一點?

我認為這種行為沒有內置選項,但是在配置中使用一些鍵綁定可以將游標所在的行永久保留在中間(文件的前幾行除外):

set scrolloff=99999

nnoremap <C-U> 11kzz
nnoremap <C-D> 11jzz
nnoremap j jzz
nnoremap k kzz
nnoremap # #zz
nnoremap * *zz
nnoremap n nzz
nnoremap N Nzz
nnoremap gg ggzz
nnoremap G Gzz
nnoremap gj gjzz
nnoremap gk gkzz

這映射zz了在目前行之後執行的常見動作並將螢幕居中。請注意,這可能會導致在慢速終端上閃爍(例如通過 ssh),因為螢幕位置實際上會在再次居中之前跳回。

引用自:https://unix.stackexchange.com/questions/331604