如何才能在空格上制作vim断行?

时间:2013-10-27 21:59:24

标签: vim editor word-wrap

我希望vim包装长行,但不要在中间分割单词。我发现了这篇文章:Word wrap in Gvim

但这对我不起作用。我已经在格式选项中启用了l并启用了换行符。

:set formatoptions?
formatoptions=lnq

正如您所看到的,它仍在分裂:http://i.imgur.com/ekJIHww.png

在查阅相关帮助页面后,我也尝试将breakat设置为\s,但这也不起作用。

2 个答案:

答案 0 :(得分:9)

如您所知,这是使用'linebreak'选项('wrap'开启)完成的。

  

如果在Vim上将长行包裹在'breakat'中的字符而不是最后一个适合屏幕的字符。

由于默认情况下'breakat'包含空格和制表符以及一些标点字符,因此应该按预期(而不是在单词的中间)中断行。我建议将'breakat'重置为Vim默认值,以防它被插件或映射更改。

哦,不要设置'list',这些功能不会混用。

现在一起:

:set nolist wrap linebreak breakat&vim

答案 1 :(得分:1)

这取决于您是否在讨论 hard 换行符 - 其中换行符实际插入到文本中 - 或 soft 换行符,这只会影响文本的行为方式显示在屏幕上。
我怀疑你指的是后者 如果这是正确的,那么您想要:set list(并可能将set list添加到您的vimrc)。
此外,在字边界处包裹显示(再次:仅显示,而不是实际文本),list也会使vim显示各种“不可见”字符,例如空格,制表符和(硬)换行符,到listchars变量(有关详情,请参阅:help listchars);如果你想在字边界处进行柔和的换行而不是不可见的字符,你可能会将列表单设置为空。
我个人发现我有时希望列表启用,有时不启用。 :set nolist转身关闭。 :set list!切换。 (并且为了完整性,:set list?告诉您当前是否启用了。)这些都是标准的vim约定。
如果输入太多,您可以在vimrc中设置自定义键映射。但这是另一个问题。