在vim中,我经常跳到我制作的标记或搜索结果,光标将位于屏幕的最底部或最顶部。此时,为了使屏幕更容易阅读,我想滚动缓冲区,使光标下的文本位于屏幕中间。
这可能在vim中吗?你是怎么做到的?
答案 0 :(得分:48)
答案 1 :(得分: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
这将使光标一直垂直居中到缓冲区的末尾:)
答案 2 :(得分:6)
'scrolloff'(滚动偏移)选项确定您希望在光标上方和下方看到的上下文行数。例如,将它设置为5使得在移动/滚动时光标上方和下方始终可见5条线。将'scrolloff'设置为较大的值会导致光标尽可能保留在中间行:
:set so=999
要恢复正常行为,请输入:
:set so=0
如果你在那些之间进行切换,你可以创建一个快速切换的映射:
:nnoremap <Leader>ts :let &scrolloff=999-&scrolloff<CR> " ToggleScrolloff
答案 3 :(得分:2)
你必须按两次z,如: ZZ
答案 4 :(得分:0)
scrolllfix.vim插件很适合这个。这就是我使用的,它就像一个魅力。你可以在github上找到它here.
使用scrollfix插件可以精确控制光标固定的位置(沿缓冲区垂直)。默认情况下,它位于顶部缓冲区的60%,但这是可自定义的。这会影响光标在正常和插入模式下的位置。