我使用Vim编辑带有> 10.000字和长段落的英文文本文件。文件格式为纯文本,每个段落都是一个长行。我使用wrap
选项,我将j
和k
分别绑定到gj
和gk
,以便我可以按显示行移动。
如果我的光标位于屏幕顶部(但不是文档的开头)并且我向上移动光标(使用gk
),屏幕会向上滚动以显示整条长线(300 -word段)。问题是由于线条的长度,这使得屏幕滚动屏幕的一半。这令人迷惑,因为我事先并不知道屏幕会移动多少。使用^Y
滚动会出现同样的问题。
有没有办法让Vim在使用gk
及其同类时只用一条显示行滚动?这对于编辑非源代码和大多数文本编辑器以及文字处理器中的默认行为更为自然,但在Vim中则不然。我认为这意味着Vim将不得不停止显示我正在编辑的整行。
答案 0 :(得分:2)
我已经通过切换到硬包裹的散文文件来亲自解决了这个问题。我不相信还有其他任何解决方案。这是第一个让我了解这个想法的文章之一:http://alols.github.io/2012/11/07/writing-prose-with-vim/
我必须承认,一开始,将我的所有文档转换为这种传统的文本文件编写方式的想法对我来说看起来很烦人,而且它也可能对你有所帮助。但我很快意识到,通过尝试其他现代编辑,他们都没有像Vim那样强大和稳定。在我觉得完全自然之前,所有这一切都是formatoptions
调整。在我的情况下,这是最好的:
setlocal formatoptions=wat
此外,这是我发现的一个方便的功能,可以随时回到软包装中,您可能会发现它很有用:Unwrap text in vim
答案 1 :(得分:-1)
我建议您定义一个宏来滚动页面。如果您的屏幕高度为50,则可以使用以下内容:
map zp 48gj