用户登录
用户注册

分享至

vim翻页慢

  • 作者: 小小无邪控
  • 来源: 51数据库
  • 2020-09-29
还没想到更简单的方法,现在只能靠写个函数来实现。


因为除了 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屏,现在要还想实现类似的功能,函数还需要写得再复杂一些。



  同问。。。
软件
前端设计
程序设计
Java相关