如何使vim仅在空白处换行? 我希望VIM把长线包起来,但不要在中间拆分。我发现这个帖子:

如何使vim仅在空白处换行? 我希望VIM把长线包起来,但不要在中间拆分。我发现这个帖子:,vim,editor,word-wrap,Vim,Editor,Word Wrap,但这对我不起作用。我已经启用了格式选项和换行符中的l :set formatoptions? formatoptions=lnq 如您所见,它仍然在拆分单词: 在查阅了相关的帮助页面后,我还尝试将breakat设置为\s,但这也不起作用。正如您发现的那样,这是通过使用选项来完成的(启用'wrap') 如果启用,Vim将在'breakat'中的一个字符处换行,而不是在屏幕上的最后一个字符处换行 由于默认情况下, 'Brace' 包含空格和Tab和一些标点字符,这应该如预期的那样中断行(不在单词的

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

:set formatoptions?
formatoptions=lnq
如您所见,它仍然在拆分单词:


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

正如您发现的那样,这是通过使用选项来完成的(启用
'wrap'

如果启用,Vim将在
'breakat'
中的一个字符处换行,而不是在屏幕上的最后一个字符处换行

由于默认情况下,<代码> 'Brace' 包含空格和Tab和一些标点字符,这应该如预期的那样中断行(不在单词的中间)。我建议将

'breakat'
重置为Vim默认值,以防它被插件或映射更改

哦,不要设置
“列表”
,这些功能不会混合使用

现在大家一起:

:set nolist wrap linebreak breakat&vim

这取决于您谈论的是硬换行符(换行符实际插入到文本中)还是软换行符(仅影响文本在屏幕上的显示方式)。 我怀疑你指的是后者

如果这是正确的,那么您希望
:设置列表
,并可能将
设置列表
添加到vimrc中

此外,根据
listchars
变量(更多信息,请参见
:help listchars
),包装显示,仅包装显示,而不是单词边界处的实际文本,
list
还会使Vim显示各种“不可见”字符,例如空格、制表符和(硬)换行符;如果希望在单词边界处使用软换行,而不是不可见的字符,则可以将
listchars
设置为nothing

我个人发现,我有时希望启用列表,有时不希望<代码>:set nolist将其关闭,并且
:set list切换它。为了完整起见,
:set list?
告诉您当前是否启用了。这些都是标准的Vim约定


如果输入太多,可以在.vimrc中设置自定义键映射,但这是另一个问题。

我实际上已经设置了列表:
set listchars=tab:>-,trail:
。每当我<代码>:设置NOLIST时,换行就不再在单词的中间,这使我感到困惑。前面的回答提到这两者不兼容,但我不明白为什么。哦,对了,我的错,对不起:如果启用了
list
,为了包装显示,将忽略单词边界。我也不明白。所以我必须在可见的标签和不破坏文字之间进行选择,以实现软换行?这很不寻常,也很令人沮丧。@Daniel别向我抱怨!这实际上已经在待办事项清单上很久了(
:h todo
)。除非有人花时间来实现它,否则恐怕我们就没有这个功能了。对于这个页面的未来访问者:现在已经改变了,您可以同时使用list和linebreak。