为什么我不能停止vim包装代码?


115

我无法阻止vim包装我的Python代码。如果我:set nowrap像冠军一样进入,但它仍然包裹着。

我可以按一下,J以使代码的拆分行统一起来,因此似乎正在插入真正的回车符。我只是不明白为什么或如何停止它。


15
:set nowrap仅阻止它包装行显示,而不阻止插入换行符。
风铃草

Answers:


115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

如果您提到自动换行将长行发送到下一行,请尝试

:set textwidth=0 
:set wrapmargin=0

12
一些插件似乎会覆盖此设置。
伊兹密尔·拉米雷斯

twwp选项并没有真正制定出适合我,所以我不得不去formatoptions github.com/ain/.vim/blob/...
艾因Tohvri

2
如果tw和wp仍然不能解决问题,请查看SU上的这篇帖子,它帮助我解决了我的问题:superuser.com/questions/250112/…–
Alien_SM

3
filetype plugin on从我.vimrc身上移走为我做了。

1
有了这个答案,您将无法使用gq手动将段落重新调整为textwidth。@Engineero应该是正确的。
Dylanthepiguy

86

没有其他答案对我有用(IDK为什么)。

:set wrap! 帮了我大忙(在Windows上使用GVim)。


8
这解决了一个稍微不同的问题。wrap提供换行的出现,但并不真正打破文本复制到新的生产线。您可能已wrap启用,因此将:set wrap!其关闭。您可以检查:set wrap?哪个将回显当前值(即wrapnowrap)。
Shadowtalker '16

1
此解决方案在Mac OsX上对我有效。Vim版本7.4
Shnkc

这对我有用,我首先进行了更改textwidthwrapmargin但这实际上迫使vim进行更新和重新呈现,而没有任何换行。
克雷登斯

叮叮叮!在Neovim中工作
Gjaa

当您发现您真正需要的命令是如此富有表现力和简单时,这是多么神奇的时刻。感谢开发者
Capitan Empanada

57

set formatoptions-=t应该可以。set formatoptions+=t将重新打开自动包装。

有关您可以做什么的更多信息formatoptions,请参阅文档


2
谢谢!您的解决方案是唯一对我有用的解决方案。进入插入模式时,有时vim不再插入换行符。
Geremia

2
对。这是真正的解决方案。
Russ Bateman

16

为了防止vim包装长行,我在我的代码中使用了这两行.vimrc

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing

12

要禁用换行,您可以输入 :set wrap!此命令或将其附加到~/.vimrc


2
这不会影响此问题所涉及的实际换行符的自动插入。
亚瑟·塔卡

9

也许是设置的文本宽度,当达到一定长度时会自动换行尝试

:set tw=0

如果失败,则播放例如

:set wrap linebreak textwidth=0 

:set virtualedit=insert

2
wrap和linebreak不会在缓冲区中插入实际的行尾,因此这似乎不是他的问题。
A. Levy


0

打开vimrc_example.vim(是的,这是Vim74中的文件)并设置textwidth = 0。


0

在Macbook Pro上,我在.vimrc中胜过了

autocmd FileType text setlocal textwidth=78

所以它变成了

"  autocmd FileType text setlocal textwidth=78

(我通过自制软件安装了vim版本。)这对所有.txt文件都有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.