Does anyone know of a way to get vim to wrap long lines of text such that the position of the wrapped text is based on the indentation of the current line? I don't want to reformat my code, just for it to be displayed prettily.
For instance, if I set my settings so that the line:
print 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message)
is displayed when wrapped as:
print 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
then if I write a block of code like this:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message)
it wraps to something like this:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
I would prefer for it to be displayed as:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
Edit: after reading Don Werve's response, it seems that I am indeed looking for the breakindent
option, but the option is still on the "Awaiting updated patches" list (see Vim TODO). So what I'd like to know is what is the easiest way to get vim working with breakindent
? (I don't care what version of vim I have to use.)
For controlling the indentation of Python code, see
:h ft-python-indent
. This for example will make Vim indent two times theshiftwidth
if you do a newline while there's an unclosed paren:However
&sw * 2
is the default, so not sure why it's not working for you. It works for me with manual newlines or withtextwidth
-induced newlines.The above setting needs to be in
.vimrc
or needs to be set somehow before Vim enters Python mode. Be sure to:setf python
or that you're otherwise in Python mode.I think set textwidth=80 should do it.
I asked the same question on SuperUser, eventually found this question, found the patch, and updated the patch to work with Vim 7.2.148 from Fedora 11.
You can use
yumdownloader --source vim
to get the source RPM. Then add aPatch3312:
line and a%patch3012 -p1
line to the spec file, and build the rpm.I recommend this vimscript:
http://www.vim.org/scripts/script.php?script_id=974
"This indentation script for python tries to match more closely what is suggested in PEP 8 (http://www.python.org/peps/pep-0008.html). In particular, it handles continuation lines implied by open (parentheses), [brackets] and {braces} correctly and it indents multiline if/for/while statements differently."
You're looking for
breakindent
You may want to also refer to this thread.