还没想到更简单的方法,现在只能靠写个函数来实现。
因为除了 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屏,现在要还想实现类似的功能,函数还需要写得再复杂一些。
同问。。。
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
小小无邪控