如何防止vim中的断线

如何防止vim中的断线,vim,Vim,我喜欢长线显示在多条终端线上;我不喜欢vim在我的实际文本中插入新行。.vimrc的哪一部分应该更改?使用 :set wrap 以可视方式换行,即该行仍然是一行文本,但Vim在多行上显示它 使用 将长线显示为一行(即,必须水平滚动才能看到整行) 我不确定是否完全理解,但您可能正在寻找“formatoptions”配置设置。尝试类似于:set formatoptions-=t。t选项将插入换行符,使文本以textwidth设置的宽度换行。您也可以将此命令放入.vimrc,只需删除冒号(:) 我喜

我喜欢长线显示在多条终端线上;我不喜欢vim在我的实际文本中插入新行。.vimrc的哪一部分应该更改?

使用

:set wrap
以可视方式换行,即该行仍然是一行文本,但Vim在多行上显示它

使用


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

我不确定是否完全理解,但您可能正在寻找“formatoptions”配置设置。尝试类似于
:set formatoptions-=t
t
选项将插入换行符,使文本以
textwidth
设置的宽度换行。您也可以将此命令放入
.vimrc
,只需删除冒号(

我喜欢在多条终端线上显示长线

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

set wrap
我不喜欢vim在我的实际文本中插入新行

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

set textwidth=0 wrapmargin=0

使用
:立即设置RAP
。。工作起来很有魅力

:设置tw=0


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

您可能会发现
设置lbr
很有用;使用<代码> SETRAP 这将包装,但只在空白处切割线,而不是在单词中间。 e、 g


奇怪的是,如此简单的设置需要如此多的“胡闹”才能起作用

现在回答你的问题,对我来说,它似乎与以下因素结合在一起:

:set wrap linebreak nolist
:verbose set tw?
(这似乎可以防止现有线断开,只需缠绕即可。)


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

如果像我一样,您正在Windows上运行gVim,那么您的.vimrc文件可能正在寻找另一个自动设置
textwidth
(在我的例子中是
78
)用于文本文件

与此类似的问题–关于:

在我的案例中,建议我运行以下程序:

:set wrap linebreak nolist
: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中的相关行

SETNOWRAP允许您在不添加vi/vim换行符的情况下粘贴一条长线,这是正确的,但是这条线并不是为了便于阅读而直观地包装的。相反,您只需要滚动浏览一条长线

要使行以可视方式换行,但不在其中插入换行字符,请设置换行(这可能是默认设置,因此不需要设置),并设置textwidth=0


在某些系统上,默认设置为textwidth=0。如果您没有发现这种情况,请将set textwidth=0添加到.exrc文件中,以便它成为用户在所有vi/vim会话中的默认设置。

set formatoptions-=t
保留可视的textwidth,但在插入模式下不添加新行。

用于:

  • 设置换行
  • 设置换行符
  • 设置breakindent
  • 设置showbreak=ͱ
一些解释:

  • wrap
    选项直观地将行包装起来,而不必水平滚动
  • <>代码>线段用于在特定字符上包覆长线,而不是在直线太长的任何地方,例如在单词中间。默认情况下,它在空格(单词分隔符)上断裂。,但您可以使用
    breakat
    对其进行配置。它也不会根据需要在文件中插入
    EOL
  • breakat
    是一个字符,它将在该字符中可视地打断行。如果您希望在两个单词之间的空白处打断,则无需修改它
  • breakindent
    允许在行中断时直观地缩进行
  • showbreak
    允许设置指示此中断的字符
有关更多信息,请参阅vim中的
:h


请注意,如果您选择此路线,则无需修改
textwidth
wrapmargin

为了清晰起见:您喜欢在多个终端线上显示长线;您不喜欢vim将新线插入到实际文本中?如果是这样,则
:set nowrap
与您想要的相反:(.@Andrew:是的,你的总结正是我想要的,但它与OP定义的通缉行为正好相反……:P@Morlock,但回答了我的问题,谷歌把我带到这里:)有键盘快捷键吗?@PiniCheyni,添加到你的.vimrc文件:nnoremap:set invwrap,然后你可以使用Ctrl+W来切换文本换行。谢谢你们的提示。我选择了:set nowrap和:set textwidth=0。当我键入时效果很好,我仍然想看到“视觉”80列限制,我不希望vim在我输入第80列后自动添加换行符。我该怎么做?这正是我想要的答案,但它不是OP问题的答案。将此作为顶部答案有点误导。我不知道如何解决此问题。我只会编辑您的答案,以同时回答原始问题stion.但是已经有一个正确的答案,投票率几乎一样高。所以我只是投票切换了两个答案。这正是我没有寻找的答案,也不是OP问题的答案。这不是问题的答案。我想要的正好相反…当我打字时,我仍然想看到“视觉”80列限制,我不想要vi
" 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

  ...
source $VIMRUNTIME/vimrc_example.vim