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

如何在Vim中智能地包装线,而不必使用';gqG';?,vim,Vim,我是一名记者和程序员新手,希望在日常写作中更多地使用Vim。但我的问题是Vim似乎并没有始终如一地包装好线路。我的意思是,即使在我写作时,我的行按预期换行为80,如果我返回并编辑一行(比如,添加或删除文本),Vim也不会保持换行。看起来我可以在以后使用gqG手动修复此问题;但要一直这样做有点烦人,有时会导致奇怪的断线 下面是我在Vim的.vimrc文件中用于字处理的内容 " Enable word processing func! WordProcessorMode() setlocal

我是一名记者和程序员新手,希望在日常写作中更多地使用Vim。但我的问题是Vim似乎并没有始终如一地包装好线路。我的意思是,即使在我写作时,我的行按预期换行为80,如果我返回并编辑一行(比如,添加或删除文本),Vim也不会保持换行。看起来我可以在以后使用
gqG
手动修复此问题;但要一直这样做有点烦人,有时会导致奇怪的断线

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

" Enable word processing
func! WordProcessorMode()
    setlocal textwidth=80
    setlocal smartindent
    setlocal noexpandtab
    setlocal wrap 
endfu
com! WP call WordProcessorMode()
打了
WP
,我的情况如下:

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

但当我尝试将它们结合起来时,会发生以下情况:

如上所述,如果我输入
gqG
,它倾向于将其清理干净,并根据需要在第80列换行。但取决于我编辑其他行的方式,它们可能会在奇数处被打断(即早在80之前)

有没有一种方法可以使行以设置的
textwidth
智能地、一致地包装?我一直在寻找这个问题的答案,但没有找到答案。设置
linebreak
nolist
似乎没有任何效果<代码>格式选项设置为
tcq

谢谢

这称为自动格式化,并通过
'formatoptions'
中的
a
标志启用。发件人:

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


这里的关键是正确地告诉Vim段落的组成部分。有关详细信息,请参阅。否则,你很快就会得到一大块文本,没有任何中断!这可以很好地处理纯文本,但我个人觉得它很烦人。

编辑一行后,在视觉模式下使用
gq
?i、 e.选择使用
vip
编辑了一行的段落,然后键入
gq
,重新格式化编辑了一行的段落。

a格式选项可能会有所帮助。所以,试试
:设置formatoptions+=a
,然后开始在插入模式下键入文本。这似乎已经成功了!非常感谢@Sergio
textwidth
设置为非零值,通过插入行尾字符硬换行。作为替代,考虑软件调用。执行
:设置textwidth=0
以禁用硬包装,执行
:设置包装
。这样,当长线到达窗口或终端边缘时,它们将缠绕。您可能希望将终端或窗口的大小调整为80个字符宽。