始终保持光标在Vim中居中

始终保持光标在Vim中居中,vim,Vim,我想随时保持光标居中 多亏了上面提到的高值滚动,当光标周围有一条线时,我能够使它居中,但当光标靠近第一行或最后一行时,我无法使Vim以这种方式工作。是否可以让Vim添加“波浪线”~行以替换“实线”?您可以尝试以下映射: :nnoremap j jzz :nnoremap k kzz 如果您经常使用G跳转到文件末尾,您可能还需要 :nnoremap G Gzz 我只能猜测你的动机,但如果你想要一个单一的、整洁的、正面和中间都有编辑功能的窗口,我可以推荐。虽然它没有将光标钉在中间,但它使用“代码

我想随时保持光标居中


多亏了上面提到的高值
滚动
,当光标周围有一条线时,我能够使它居中,但当光标靠近第一行或最后一行时,我无法使Vim以这种方式工作。是否可以让Vim添加“波浪线”
~
行以替换“实线”?

您可以尝试以下映射:

:nnoremap j jzz
:nnoremap k kzz
如果您经常使用
G
跳转到文件末尾,您可能还需要

:nnoremap G Gzz

我只能猜测你的动机,但如果你想要一个单一的、整洁的、正面和中间都有编辑功能的窗口,我可以推荐。虽然它没有将光标钉在中间,但它使用“代码>”滚动“< /C>”和所有的空白填充窗口,以避免光标漂移到编辑器边界太多。

< P>确切地说是什么使KEV,但是如果(像我)你是一个愚蠢的全键盘用户,你可以添加< /P>
:nnoremap j jzz
:nnoremap k kzz
:nnoremap <Down> jzz
:nnoremap <Up> kzz
:nnoremap j jzz
:nnoremap k kzz
:nnoremap jzz
:nnoremap kzz
多亏了@kev

的帮助,我们可以在正常模式下进行基本导航,而不是搜索等更复杂的运动。在插入模式下,它们也不会为您做任何事情,这是我个人花费大部分时间的地方:在文件的底部编写

我有一个简单而严厉的解决办法

:autocmd CursorMoved,CursorMovedI * call CentreCursor()
使用用户定义的函数

function! CentreCursor()
    let pos = getpos(".")
    normal! zz
    call setpos(".", pos)
endfunction
这将保存当前光标位置,使视图居中,然后恢复光标位置(我最初仅使用
*zz
尝试了
autocmd
,但这似乎在添加到行尾时中断)

顾名思义,只要光标以正常或可视(插入)模式移动,就会触发,因此这应该涵盖所有基础。显然,它经常被触发,所以将其用作钩子可能不是一个好主意。我还没有注意到演出的热播;您的里程数可能会有所不同(理想情况下会有
LineMoved
事件或类似事件,但不会有)


上面给出了在vim中我所期望的
:set scrolloff=999
。它不会在文件顶部执行任何操作,因为那里没有
~
行。如果您坚持让光标居中,即使在打开新文件时,一个(非常)粗糙的解决方法是在
BufRead
上插入几行空行。您可能还希望在
buflive
或类似的应用程序上删除。我以前没有做过任何vimscript,但如果您愿意,可以开始使用它。

Near:/它只在光标位于最后一行时有效,而不适用于第一行。然而,这正是我想要的行为:)@kev Nice。从不知道
zz
!这很好,但我经常用换行符编辑长行文件。有没有类似的解决方案可以保持光标水平居中?Vim不能在顶部显示“~tilda线”,只能在底部显示。可能是一个很好的考虑。