2011-11-05 66 views
14

默认情况下,当您向下滚动到vim窗口中显示的缓冲区的末尾时,可以滚动,直到最后一个文件行位于vim显示区域的第一行。显示区域的所有其他行都标有“〜”字符。 当最后一个文件行位于vim窗口的底部时,是否有配置停止滚动?vim - 第一个文件结束后停止滚动

编辑: 更确切地说,这种行为仅适​​用于鼠标滚轮滚动或PgDown键导航,它们会在屏幕上填充那些不存在的线条标记。我使用向下箭头键逐行移动光标,它在最后一个文件行处正确停止。

+0

我不知道,如果你能设法得到VIM像你想工作? – JohnTortugo

回答

10

只需zb将当前行对齐到窗口的底部。

例如ģŽb

不surpisingly有一族相关平移运动:

  • ŽĴ向下
  • Žķ向上
  • ž吨顶部
  • Žb底部
  • Žž中心(中间)
  • Žž中心(中间)

对于compl eteness:

  • Ž升/Ž大号垂直盘向右
  • Žħ/Žħ垂直平移到左

此外,看看scrolloff

我使用

:set scrolloff=2 

始终保持的2条线的最小缓冲之前或在当前光标行之后。这使得这些平移动作几乎具有魔力。我花了一整天的浏览代码库使用无非是

  • 寻呼/,hjkl,以及频繁平移搬迁与(大部分)žž
  • 导航}/{
  • ctags适用于所有其他导航需求
+0

是的,我已经有一个滚动设置。但它与PgDown或鼠标滚轮无关。 – greydet

+0

有没有办法重新映射PgDown或鼠标滚轮下滚动使用基于'Z'命令组合自动停止他们在最后一个文件行? – greydet

+0

实际上,一个可能的解决方案是将鼠标滚轮和页面下移键重新映射到'}'命令。感谢您让我知道这个导航命令 – greydet

1

我不这么认为。但即使存在,如果文件中的行数少于屏幕上的行数,您希望它的行为如何?你必须以某种方式显示那些不存在的行。

你必须有一些方法告诉vim如果文件的顶部在视图中显示那些行,但如果顶部不在视图中则不允许它们显示。

+3

当然,如果文件没有足够的线条来填充屏幕,那么不存在那些不存在的线条标记。我只是不希望PgDown或鼠标滚轮滚动到文件末尾 – greydet

1

不,您的描述不正确。

当你用一行一行地滚动并用箭头键或j/k键时,Vim将停在屏幕的底部。 也就是说,它不会填充屏幕与不存在的线。

但是,如果用PgDown/PgUp逐页浏览,则可以在屏幕上显示不存在的行。这是无法避免的,因为PgDown/PgUp键不会一行一行地跳下去。

+1

是的,这正是我想要避免的:使用PgDown或鼠标滚轮滚动在屏幕上显示不存在的行! – greydet

+0

@greydet - 那么,当你在最后一页上PgDown时,你会如何表现Vim? – Rook

0

我刚刚发现这个(http://vimrc-dissection.blogspot.se/2009/02/fixing-pageup-and-pagedown.html):

map <silent> <PageUp> 1000<C-U> 
map <silent> <PageDown> 1000<C-D> 
imap <silent> <PageUp> <C-O>1000<C-U> 
imap <silent> <PageDown> <C-O>1000<C-D> 

这似乎为翻页键工作。而对于后滚动一些不成功的搜索,我想出了这个:

map <ScrollWheelUp> H5k 
map <ScrollWheelDown> L5j 

你失去了线,但无论如何滚动时,它不是非常有用吗?或者,你也可以这样做:

map <ScrollWheelUp> <C-U> 
map <ScrollWheelDown> <C-D> 

如果你不介意的话非常快速滚动...