如何在Vim中智能地包装线条而不必使用'gqG'?

时间:2018-04-21 03:46:20

标签: vim

我是一名记者和新手程序员,并希望将Vim更多地用于我的日常写作。但我的问题是,Vim似乎并没有保持线条包裹。我的意思是,即使我在写作时我的行包装在80,如果我回去编辑一行(比如通过添加或删除文本),Vim也不会保持行包裹。看起来我可以使用gqG后手动修复此问题;但这有点令人烦恼,有时会导致奇怪的断线。

以下是我在.vimrc文件中用于Vim中文字处理的内容。

" Enable word processing
func! WordProcessorMode()
    setlocal textwidth=80
    setlocal smartindent
    setlocal noexpandtab
    setlocal wrap 
endfu
com! WP call WordProcessorMode()

致电WP后,这是我的情况:

两个单独的段落,用干净的包装输入:

Image: Vim window with two separate paragraphs

但是当我尝试将它们组合起来时,就会发生这种情况:

Image: Paras combined, but text runs long

如上所述,如果我输入gqG,往往会清理它并根据需要回到第80列。但是根据我如何编辑其他行,它们可能会在奇数位置被破坏(即80之前)。

有没有办法在一组textwidth中智能且一致地包裹线条?我已经找到了答案,但找不到答案。设置linebreaknolist似乎没有任何效果。 formatoptions设置为tcq

谢谢!

2 个答案:

答案 0 :(得分:1)

这称为自动格式化,并通过a中的'formatoptions'标志启用。来自:help fo-table

  

a 自动设置段落格式。每次插入文字或     删除的段落将重新格式化。请参见|自动格式化|。     当出现“ c”标志时,只会发生在已识别的情况下     评论。

关键是要正确地告诉Vim什么是 paragraph 。有关详情,请参见:help auto-format。否则,您很快就会得到一大块文本,而且没有任何中断!这可以与纯文本一起很好地工作,但是我个人觉得很烦人。

答案 1 :(得分:0)

编辑一行后在可视模式下使用 gq 吗?即选择您使用 vip 编辑过一行的段落,然后键入 gq 将重新格式化已编辑过一行的段落。