Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim、长线和滚动_Vim_Editing - Fatal编程技术网

Vim、长线和滚动

Vim、长线和滚动,vim,editing,Vim,Editing,我使用Vim编辑超过10.000个单词和长段落的英文文本文件。文件格式为纯文本,每个段落都是一条长线。我使用wrap选项,将j和k分别绑定到gj和gk,这样我可以通过显示行移动 如果我的光标位于屏幕顶部(但不是文档的开头),并且我向上移动光标(使用gk),屏幕将向上滚动以显示整个长行(一个300字的段落)。问题是,由于行的长度,这会使屏幕滚动屏幕的一半。这让人迷失方向,因为我事先不知道屏幕会移动多少。使用^Y滚动也有同样的问题 当使用gk及其类似工具时,是否有办法使Vim仅滚动一行显示?这对于编

我使用Vim编辑超过10.000个单词和长段落的英文文本文件。文件格式为纯文本,每个段落都是一条长线。我使用
wrap
选项,将
j
k
分别绑定到
gj
gk
,这样我可以通过显示行移动

如果我的光标位于屏幕顶部(但不是文档的开头),并且我向上移动光标(使用
gk
),屏幕将向上滚动以显示整个长行(一个300字的段落)。问题是,由于行的长度,这会使屏幕滚动屏幕的一半。这让人迷失方向,因为我事先不知道屏幕会移动多少。使用
^Y
滚动也有同样的问题


当使用
gk
及其类似工具时,是否有办法使Vim仅滚动一行显示?这对于编辑非源代码和大多数文本编辑器以及字处理器中的默认行为更为自然,但在Vim中则不然。我认为这意味着Vim必须停止坚持显示我正在编辑的整行内容。

我建议您定义一个宏来滚动页面。如果屏幕高度为50,则可以选择以下选项:

map zp 48gj

我个人通过切换到硬包装的散文文档解决了这个问题。我认为没有其他解决办法。以下是我第一次接触到这个想法的一篇文章:

我必须承认,一开始,把我所有的文档都转换成这种老式的文本文件编写方式的想法对我来说非常烦人,而且可能对你也一样。但我很快就意识到,通过尝试其他现代编辑,他们没有一个像Vim那样强大和稳定。在我感觉完全自然之前,我所做的只是一些
formatoptions
调优。就我而言,这是最有效的:

setlocal formatoptions=wat

此外,我发现了一个方便的功能,可以随时返回到soft wrap,您可能会发现它很有用:

关于这个主题,已经有一些问题了;虽然我现在不记得结论是什么,但你是否尝试过将段落分开。10000字并不是一句话(或一段话)的通常定义。一段话有300字长,句子明显比这短;对于Vim来说,段落只是一行(一行与一个句子不相同)。整个文件包含10000字。由于所使用的编辑器的滚动行为,显然不能选择写较短的段落!如果您还记得以前关于我的问题的讨论,我将非常感谢您给我一个指针——我所能找到的只是关于
wrap
gj
gk
的问题。这是Vim的一个长期限制。在谷歌上搜索“vim scrolling wrapped line”:这似乎是过去10年或15年来的常见请求。没有已知的优雅解决方案,也许Vim不是适合这项工作的工具?@loevborg-对于Vim来说,段落不是一行。段落可以有EOF字符。在它们中,标准的导航方式是通过{},所以我看不出它们需要那么长的原因。Idigas,你的评论没有帮助,而且离题了。谢谢罗曼的建议!我不明白你为什么认为Vim不是写长文本的合适工具。