在vim中是否可以循环滚动?

时间:2012-09-12 03:07:48

标签: vim scroll

是否可以配置vim使移动命令“环绕”垂直(或水平)缓冲区?

换句话说,假设我在视觉模式下在缓冲区中的第2行。我按3k。我的光标现在位于缓冲区的最后一行。

或者更简单地说,我的光标位于文件的第一行 - 我按k。现在我的光标翻转到文件的最后一行。

如果之前已经提出过这个问题,请道歉,但我找不到任何搜索“循环滚动”或“环绕式滚动”的引用。

2 个答案:

答案 0 :(得分:5)

可能有一些vimscript hackery,但通过像G这样的动作来转到文件底部gg1G或{{ 1}}转到文件的顶部。同样,行{}为<C-Home>,行尾为$,第一个非空白字符为0

您还可以设置^,它指定当移过线的末尾时移动到下一行的键移动到移动到行的开头时移动到上一行。除此之外,我不认为你所要求的内置功能。您可以使用某些vimscript来完成它,但它需要将h,j,k和l重新映射到函数并处理它们是否位于行/文件的结尾/开头。对我来说,这似乎有点过分而且相当混乱。

所有这一切,如果你必须......

:help whichwrap

答案 1 :(得分:4)

Vim是一个文本编辑器,文本具有包含列和行的开头和结尾的物理和逻辑属性。因此,您请求的功能不存在,并且可能永远不会包含在Vim中。

但是,通过将大多数移动命令绑定到自定义实现,可以在Vimscript中模拟一些工作。但这会在使用模型中引入不一致,因为范围(例如:42,10)仍然不会回滚。

为什么你想要这样的环绕?这是针对特定文件类型的,还是您习惯使用其他编辑器?