在vim中,我经常跳到我做的标记或搜索结果,光标将位于屏幕的最底部或最顶部.此时,为了使屏幕更容易阅读,我想滚动缓冲区,使光标下的文本位于屏幕中间.
这可能在vim?你怎么做呢?
Pet*_*ker 52
这将使当前行居中
zz
Run Code Online (Sandbox Code Playgroud)
您可以选择将其设置scrolloff为大型999工作线,工作线始终位于中心位置,除非您朝向文件的开头或结尾.
:set scrolloff=999
Run Code Online (Sandbox Code Playgroud)
ark*_*kod 12
有一种方法可以使光标在EOF附近保持居中.
scrolloff = 999工作正常,除了靠近缓冲区的末端,它没有光标居中,我不知道任何允许scrolloff将光标居中放在缓冲区末端的修复.
scrolloff = 999的替代方法是将导航命令重新映射到光标的中心.我在_vimrc/.vimrc中执行以下操作:
" Avoids updating the screen before commands are completed
set lazyredraw
" Remap navigation commands to center view on cursor using zz
nnoremap <C-U> 11kzz
nnoremap <C-D> 11jzz
nnoremap j jzz
nnoremap k kzz
nnoremap # #zz
nnoremap * *zz
nnoremap n nzz
nnoremap N Nzz
Run Code Online (Sandbox Code Playgroud)
这将使光标一直垂直居中到缓冲区的末尾:)
'scrolloff'(滚动偏移)选项确定您希望在光标上方和下方看到的上下文行数.例如,将它设置为5使得在移动/滚动时光标上方和下方始终可见5条线.将'scrolloff'设置为较大的值会导致光标尽可能保留在中间行:
:set so=999
Run Code Online (Sandbox Code Playgroud)
要恢复正常行为,请输入:
:set so=0
Run Code Online (Sandbox Code Playgroud)
如果您在这些之间切换,可以创建一个快速切换的映射:
:nnoremap <Leader>ts :let &scrolloff=999-&scrolloff<CR> " ToggleScrolloff
Run Code Online (Sandbox Code Playgroud)