How to stop line breaking in vim

Viewed 187159

I like that the long lines are displayed over more than one terminal line; I don’t like that vim inserts newlines into my actual text. Which part of .vimrc I should change?

11 Answers

Use

:set wrap

To wrap lines visually, i.e. the line is still one line of text, but Vim displays it on multiple lines.

Use

:set nowrap

To display long lines as just one line (i.e. you have to scroll horizontally to see the entire line).

I like that the long lines are displayed over more than one terminal line

This sort of visual/virtual line wrapping is enabled with the wrap window option:

:set wrap

By default this will wrap at the first character that won't fit in the window. This means it will wrap in the middle of a word if that's where the window boundary lies. To change it to wrap on word boundaries, you can also:

:set linebreak

This will cause wrap to only wrap at the characters in the breakat setting, which defaults to space, tab, and small set of punctuation characters.

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

I don’t like that vim inserts newlines into my actual text.

To turn off physical line wrapping, clear both the textwidth and wrapmargin buffer options:

:set textwidth=0 wrapmargin=0

I'm not sure I understand completely, but you might be looking for the 'formatoptions' configuration setting. Try something like :set formatoptions-=t. The t option will insert line breaks to make text wrap at the width set by textwidth. You can also put this command in your .vimrc, just remove the colon (:).

:set tw=0

VIM won't auto-insert line breaks, but will keep line wrapping.

Use :set nowrap .. works like a charm!

You may find set linebreak useful; with set wrap on this will wrap but only cutting the line on whitespace and not in the middle of a word.

e.g.

without linebreak the li
ne can be split on
a word

and

with linebreak on the
line will be
split on 
whitespace only

set formatoptions-=t Keeps the visual textwidth but doesn't add new line in insert mode.

I personnally went for:

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

Some explanation:

  • wrap option visually wraps line instead of having to scroll horizontally
  • linebreak is for wrapping long lines at a specific character instead of just anywhere when the line happens to be too long, like in the middle of a word. By default, it breaks on whitespace (word separator), but you can configure it with breakat. It also does NOT insert EOL in the file as the OP wanted.
  • breakat is the character where it will visually break the line. No need to modify it if you want to break at whitespace between two words.
  • breakindent enables to visually indent the line when it breaks.
  • showbreak enables to set the character which indicates this break.

See :h <keyword> within vim for more info.

Note that you don't need to modify textwidth nor wrapmargin if you go this route.

Related