Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Vim/gvim will wrap long lines like this:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

Is there a way to get Vim to wrap those lines like this instead:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

I want the wrapped line to start a little past the indent of where that line started. (Just to be clear, I'm talking about wrap, not textwidth.)

I want the indentation of the line to be considered in the wrapping of that line so that the code structure isn't hidden by wrapped lines.

share|improve this question
add comment

4 Answers

In your .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

Or just type :set showbreak=-----> in any session.

For reference, my research trail (Vim 6.2): :help 'wrap' -> :help 'linebreak' -> ( :help 'showbreak' -> :help 'cpoptions', :help 'breakat')

share|improve this answer
    
Very cool, but not really what I meant. You took it a bit more literally than I intended, so my fault there. I'll see if I can clarify. –  retracile Nov 20 '09 at 15:03
add comment
up vote 10 down vote accepted

So apparently this requires a patch to Vim. There is a patch by Vaclav Smilauer from back in 2007. I updated the patch to work with Vim 7.2.148 from Fedora 11. But it does seem to do the job.

share|improve this answer
    
+1 just for contributing to the project –  whitequark Aug 14 '10 at 3:32
1  
As Fedora releases updates to Vim, I'm updating the patch. See retracile.net/wiki/VimBreakIndent for the latest. –  retracile Nov 23 '10 at 4:16
    
Bonus points to someone who can explain how to get this to work with MacVim. –  donut Mar 29 '11 at 20:01
    
Where is the patch? That site doesn't link to any I can see –  puk Feb 23 '12 at 11:57
1  
As of today (June 25, 2014) the breakindent patch is officially part of Vim 7.4 -- it is added by patch 338 and 345. –  Heptite Jun 25 at 21:21
show 3 more comments

Not the perfect answer you're looking for, but here's what I do to get around vim's lack of proper indentation.

First, download Nathanael Kane's indent guide (optional) as it better indicates what indentation level you are at, even to the point where you can set tabwidths to be only 2 spaces!

Second, map a key combination to toggle word wrap. I have mine set to 'r' for 'wrap' ('w' is for saving) like so

:noremap <leader>r :set nowrap! <CR>

Then I always have word wrap off, since it is more aesthetically pleasing, and I quickly toggle it on if I need to edit the line.

share|improve this answer
add comment

The foul "workaround" I currently use, is to have a fixed but big indentation in the prefix. It looks good, as long as this fixed indentation is bigger than the wrapped line's indentation, which is the case most of the time.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.