如何轻松上下滚动页面的25%?
#1 楼
也许ctrld和ctrlu可能就是您想要的。默认情况下,它们移动屏幕的一半。从
:h CTRL-D
:向下滚动窗口在缓冲区中。
行数来自“滚动”选项(默认值:半个
屏幕)。
如果给出[count],则首先设置“滚动”选项
到[count]。
这意味着您第一次要在窗口中滚动时,可以执行XXctrld,其中XX是窗口中行数的25%。将
scroll
设置为XX值后,您可以使用ctrld和ctrlu移动屏幕的25%。我也认为
:h scrolling
对您来说可能很有趣。 > 编辑
这是具有功能和一些映射的另一种解决方案,可添加到您的
.vimrc
中:function! ScrollQuarter(move)
let height=winheight(0)
if a:move == 'up'
let key="\<C-Y>"
else
let key="\<C-E>"
endif
execute 'normal! ' . height/4 . key
endfunction
nnoremap <silent> <up> :call ScrollQuarter('up')<CR>
nnoremap <silent> <down> :call ScrollQuarter('down')<CR>
该功能将获取当前窗口的高度,并根据其参数向上或向下滚动屏幕的高度的四分之一。
映射将调用该函数,第一个向上和向下第二个要下降。
如果要保留箭头键的默认行为,当然可以将
<up>
和<down>
更改为其他一些键。评论
似乎在映射中使用ctrl-E和ctrl-Y可能更有意义,因为a)。然后,您将有分别用于1/2页和1/4页滚动的快捷方式。 b)。 ctrl-U / ctrl-D的行为是一致的,而不取决于您以前是否使用过映射。
–丰富
16-10-25在12:36
我不明白你的重要提示。手动输入是什么意思?当前使用此功能将删除一行而不是移动页面。
–路易·洪
16-10-25在18:00
@LouisHong参见行let key =“ ^ U”双引号之间的部分旨在表示ctrl + u的键控代码。因此,如果您在vim中复制了该函数,则将光标放在第一个双引号上,单击ci“来修改引号的内容,然后按ctrl + v,然后按ctrl + u到同一行,让key =” ^ D“ 。
–statox♦
16-10-25在18:11
@Rich:是的,这很不错。我使用了箭头键,因为那是OP所说的,但是您的观点很重要。
–statox♦
16-10-26在9:06
@statox你误解了我! (我不清楚)。我的意思是使用let key =“ ^ Y”代替let key =“ ^ U”。它将创建相同的行为,但不会影响“滚动”设置。
–丰富
16-10-26在9:31
#2 楼
您可以使用ctrle和ctrly上下移动一页。然后,如果您想将+/- 25%的位置移动,则可以使用20ctrle,这将使您向下移动20行。
这也是一个很好的解释性问题,类似于您的问题:https://stackoverflow.com/questions/3458689/how-to-move-screen-without-moving-cursor-in- vim
#3 楼
我使用了statox变量,以便在换行时滚动得更一致。#4 楼
如果您想要一个好的通用答案,而不是确切的25%,则可以将页面上的正常行数除以25,然后设置一些系统映射。例如,如果您通常一次在屏幕上显示约100行,那么其中的25%是25行,因此您可以在诸如大写J和K之类的内容上设置键映射,以快速上下移动25行noremap J 25j
noremap K 25k
如果您只想跳到整个文件的四分之一标记,则在正常模式下只需键入:
25%
评论
我认为您的解决方案有两个缺点:noremap J 25j对值25进行硬编码,因此,例如,当您水平分割一个100行的窗口时,您的映射实际上将在新窗口中导航50%。关于您的第二个选项:25%我不知道它是否存在,但是从我的测试看来,它会将光标置于基于第一行的位置:如果我有100行缓冲区,并且我想向前移动25% :25%不管光标在哪里,都会带我进入第25行。还可以请您在文档中找不到描述此功能的帮助主题吗?
–statox♦
16-10-27在8:09
我在:h N%:-)找到了帮助主题。
–statox♦
16-10-27在8:31
评论
检查此答案中的划掉的功能:stackoverflow.com/a/3102890