vim翻页(滚屏)时,如何保持光标在屏幕中的位置固定不变?
vim翻页(滚屏)时,默认光标会上移到屏幕顶端或下移到屏幕底端,我希望能保持在屏幕中的位置不变,即只移动文字,但不移动光标(相对屏幕而言)的位置。该怎么实现呢?求教,先谢...
vim翻页(滚屏)时,默认光标会上移到屏幕顶端或下移到屏幕底端,我希望能保持在屏幕中的位置不变,即只移动文字,但不移动光标(相对屏幕而言)的位置。
该怎么实现呢?求教,先谢过! 展开
该怎么实现呢?求教,先谢过! 展开
1个回答
展开全部
还没想到更简单的方法,现在只能靠写个函数来实现。
因为除了 jk 之类的命令,通常上下移动都不能保持列。(c-d c-u 这样的命令可以保持行)
所以比如还想用 c-f 向下挪,可以利用类似这样的技巧:
nnoremap <silent> <C-F> :call ScrollDown()<CR>
function! ScrollDown ()
let wh = winheight(0)-2
let wl = winline()-1
if wl >= 1
exe "normal! ". wl ."k"
endif
exe "normal! ". wh ."jzt"
if wl >= 1
exe "normal! ". wl ."j"
endif
endfunction
原理是:
先求一下一屏有多高,和当前在第几行。
然后先用 k 向上挪到第一行。再向下挪一屏,再把当前行绘制到当前屏第一行。(相当于挪一屏)
再用 j 向下挪原来那么多行。(相当于恢复光标位置)
放到 vimrc 里就可以用了。向上挪改下函数中的 j k 就行了。
简单写的,可能会有 bug。
另外原来的 c-f 是能接受计数的,比如 3<c-f> 是翻3屏,现在要还想实现类似的功能,函数还需要写得再复杂一些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询