如何停止断行在vim

我喜欢长线显示在多个终端线;我不喜欢vim插入换行到我的实际文本。我应该修改。vimrc的哪一部分?

189264 次浏览

使用

:set wrap

可视化地换行,即该行仍然是一行文本,但Vim将其显示为多行。

使用

:set nowrap

将长行显示为一行(即,您必须水平滚动才能看到整行)。

我不确定我完全理解,但你可能正在寻找'formatoptions'配置设置。尝试一些类似:set formatoptions-=t的东西。t选项将插入换行符,使文本按textwidth设置的宽度换行。你也可以把这个命令放在你的.vimrc中,只是去掉冒号(:)。

我喜欢在多个终端行上显示长行

这种可视/虚拟换行是通过wrap窗口选项启用的:

:set wrap

默认情况下,这将在窗口中不适合的第一个字符处换行。这意味着如果窗口边界位于单词的中间,它将自动换行。要将其更改为按单词边界换行,您还可以:

:set linebreak

这将导致wrap只对breakat设置中的字符进行换行,该设置默认为空格、制表符和一小组标点符号。

:set breatat
breakat= ^I!@*-+;:,./?

我不喜欢vim插入换行到我的实际文本。

要关闭物理行换行,请清除textwidthwrapmargin缓冲区选项:

:set textwidth=0 wrapmargin=0

使用:set nowrap ..效果好极了!

:set tw=0

VIM不会自动插入换行符,但会保持换行。

你可能会发现set linebreak很有用;set wrap将自动换行,但只在空格处截断行,而不是在单词中间。

如。

without linebreak the li
ne can be split on
a word

而且

with linebreak on the
line will be
split on
whitespace only

奇怪的是,如此简单的设定却需要如此多的“恶作剧”才能奏效。

现在回答你的问题,对我来说,它似乎与以下几个方面相结合:

:set wrap linebreak nolist

(这似乎可以防止现有的线断裂,只是包装。)

set formatoptions=l

(这可以防止新的/编辑的行中断,而+=并不为我这样做,因为其他设置/插件似乎找到空间,并添加他们自己的选项,覆盖我的。)

如果像我一样,你在Windows上运行gVim,那么你的. vimrc文件可能会派生另一个“示例”Vimscript文件,该文件自动为文本文件设置textwidth(在我的情况下为78)。

我的答案和这个类似的问题——如何停止gVim在列80包装文本——在Vi和Vim堆栈交换站点上:

在我的例子中,康的评论建议我运行以下命令:

:verbose set tw?

这样做给了我以下输出:

textwidth=78
Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim

vimrc_example.vim中,我找到了相关的行:

" Only do this part when compiled with support for autocommands.
if has("autocmd")


...


" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78


...

并且我发现我的. vimrc正在获取该文件:

source $VIMRUNTIME/vimrc_example.vim

在我的例子中,我不想为任何文件设置textwidth,所以我只是注释掉了vimrc_example.vim中的相关行。

设置nowrap允许你粘贴一个长行,而不需要vi/vim添加换行符,这是正确的,但是为了便于阅读,该行没有被视觉上换行。相反,它只是一个长长的行,你必须滚动。

要使行在视觉上换行,但不插入换行符,可以使用套包装(可能是默认值,因此不需要设置)和设置textwidth = 0

在某些系统上,textwidth = 0的设置是默认的。如果你发现不是这样,在你的.exrc文件中添加设置textwidth = 0,这样它就会成为你所有vi/vim会话的默认值。

set formatoptions-=t保持视觉文本宽度,但在插入模式中不添加新行。

我个人认为:

  • set wrap,
  • set linebreak
  • set breakindent
  • set showbreak=ͱ

这里做一些解释:

  • wrap选项在视觉上换行,而不必水平滚动
  • linebreak用于将长行换行到特定的字符处,而不是在行太长时的任意位置,比如在一个单词的中间。默认情况下,它在空格(单词分隔符)上中断,但您可以使用breakat配置它。它也不会像OP想要的那样在文件中插入EOL
  • breakat是字符,它将在视觉上断行。如果你想打断两个单词之间的空白,不需要修改它。
  • breakindent允许在该行断行时直观地缩进该行。
  • showbreak允许设置表示该换行符的字符。

更多信息请参见vim中的:h <keyword>

注意,如果你走这条路,你不需要修改textwidthwrapmargin