10

上下文:我正在做的工作的一部分涉及将 word doc 中的文本段落粘贴到 ruby​​ 文件中。

问题:这些段落被粘贴为一行很长的文本,我必须手动插入换行符以使行的长度合理。

解决方案:有没有办法让粘贴功能“意识到”合理的边距限制并在我粘贴文本时换行?

4

4 回答 4

15

首先做一个 set textwidth

:set tw=80

然后做gqq - 对于单行

对于整个文件

ggVGgqq
于 2012-10-11T14:38:14.607 回答
4

当然你可以这样做:

:set wrap

这将在不改变底层结构或插入换行符的情况下将文本显示为已换行。有时它也有助于:

:set linebreak

这会导致 vim 换行而不破坏单词。

也可以:

:set wrapmargin

这设置了正确包装应该开始多远。

于 2012-10-11T14:27:32.040 回答
4

vi、vim 和 gvim 支持 'ex' 级别的命令:

:set ws wm=10

它在距右边框 10 个字符处设置换行边距,并强制执行“换行扫描”——在您键入时自动换行。不过,这不适用于粘贴文本。为此,存在 'fmt' 命令,它是 Unix/Linux 原生的,并在 Cygwin 和 GnuWin32 上提供(请参阅如何在 Windows 中为 Vim 获得类似 fmt 的功能?)。

“fmt”命令提供了一个过滤器,用于重新格式化带有分词的现有文本,它接受一个数字标志(例如,“-80”)来指定行宽。在粘贴长行之后,您可以从 vim 编辑器中调用它。

你做:

!!fmt

重新格式化长行(ex 命令“:.!fmt”的键盘快捷键)

或者,重新包装整个段落:

!}fmt

从段落的第一行开始。

这应该可以为您节省一些时间。

于 2012-10-11T15:02:51.717 回答
3

我通常需要导入文本,然后必须包装整个文档:我使用:

:g/./normal gqq

希望有帮助。

于 2013-02-21T01:37:51.840 回答