Stop Vim wrapping lines in the middle of a word

After doing :set wrap, Vim wraps lines longer than the window.

But is it possible to have Vim wrap to a new line on blank spaces only, not half-way through a word?


:help wrap

This option changes how text is displayed. It doesn't change the text in the buffer, see 'textwidth' for that. When on, lines longer than the width of the window will wrap and displaying continues on the next line. When off lines will not wrap and only part of long lines will be displayed. When the cursor is moved to a part that is not shown, the screen will scroll horizontally. The line will be broken in the middle of a word if necessary. See 'linebreak' to get the break at a word boundary.

:help linebreak

If on Vim will wrap long lines at a character in 'breakat' rather than at the last character that fits on the screen.

:help breakat

'breakat' 'brk' string (default " ^I!@*-+;:,./?")

So, :set linebreak and it should work out of box. Or you can restrict breakat to just break on spaces, instead of spaces+punctuation.


Use

:set linebreak

Or 'lbr' for short. It will break lines on characters included in your 'breakat' option, which includes a space by default.


With vim open, press esc and enter

:set lbr


The following will do a line wrap without breaking any words and preserve the shorter lines.

:set formatoptions+=w
:set tw=80
gggqG

To try and format the current paragraph try the follwoing:

:nnoremap Q gqip