上下文:我正在做的工作的一部分涉及将 word doc 中的文本段落粘贴到 ruby 文件中。
问题:这些段落被粘贴为一行很长的文本,我必须手动插入换行符以使行的长度合理。
解决方案:有没有办法让粘贴功能“意识到”合理的边距限制并在我粘贴文本时换行?
首先做一个 set textwidth
:set tw=80
然后做gqq
- 对于单行
对于整个文件
ggVGgqq
当然你可以这样做:
:set wrap
这将在不改变底层结构或插入换行符的情况下将文本显示为已换行。有时它也有助于:
:set linebreak
这会导致 vim 换行而不破坏单词。
也可以:
:set wrapmargin
这设置了正确包装应该开始多远。
vi、vim 和 gvim 支持 'ex' 级别的命令:
:set ws wm=10
它在距右边框 10 个字符处设置换行边距,并强制执行“换行扫描”——在您键入时自动换行。不过,这不适用于粘贴文本。为此,存在 'fmt' 命令,它是 Unix/Linux 原生的,并在 Cygwin 和 GnuWin32 上提供(请参阅如何在 Windows 中为 Vim 获得类似 fmt 的功能?)。
“fmt”命令提供了一个过滤器,用于重新格式化带有分词的现有文本,它接受一个数字标志(例如,“-80”)来指定行宽。在粘贴长行之后,您可以从 vim 编辑器中调用它。
你做:
!!fmt
重新格式化长行(ex 命令“:.!fmt”的键盘快捷键)
或者,重新包装整个段落:
!}fmt
从段落的第一行开始。
这应该可以为您节省一些时间。
我通常需要导入文本,然后必须包装整个文档:我使用:
:g/./normal gqq
希望有帮助。