有没有人知道如何让vim包装长行文本,使得包装文本的位置基于当前行的缩进?我不想重新格式化我的代码,只是为了让它显示得很漂亮。
例如,如果我将设置设置为以下行:
print 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message)
包装为:时显示
print 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
然后如果我写一个像这样的代码块:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message)
它包装成这样的东西:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
我希望它显示为:
def __repr__(self):
return 'ProcessorError(%r, %r, %r)' % (self.file, self.index,
self.message)
编辑:在阅读了Don Werve的回复后,似乎我确实在寻找breakindent
选项,但该选项仍在“等待更新补丁”列表中(参见{ {3}})。那么我想知道的是,使用breakindent
使用vim的最简单方法是什么? (我不在乎我必须使用什么版本的vim。)
答案 0 :(得分:7)
我问same question on SuperUser,最终找到了这个问题,找到了补丁,updated the patch与Fedora 11中的Vim 7.2.148一起工作。
您可以使用yumdownloader --source vim
获取源RPM。然后在spec文件中添加Patch3312:
行和%patch3012 -p1
行,并构建rpm。
答案 1 :(得分:3)
您正在寻找breakindent
您可能还想参考this thread。
答案 2 :(得分:1)
我推荐这个vimscript:
http://www.vim.org/scripts/script.php?script_id=974
“这个python的缩进脚本试图更紧密地匹配PEP 8中建议的内容(http://www.python.org/peps/pep-0008.html)。特别是,它正确处理open(圆括号),[括号]和{braces}隐含的延续线并且它以不同方式缩进多行if / for / while语句。“
答案 3 :(得分:0)
要控制Python代码的缩进,请参阅:h ft-python-indent
。例如,如果你使用换行符,那么Vim会缩进shiftwidth
两倍,而有一个未闭合的paren:
let g:pyindent_open_paren = '&sw * 2'
但是&sw * 2
是默认值,所以不确定为什么它不适合你。它适用于手动换行符或textwidth
引起的换行符。
上述设置需要在.vimrc
或需要在Vim进入Python模式之前以某种方式设置。请确保:setf python
或您处于Python模式。
答案 4 :(得分:-1)
我认为设置textwidth = 80应该这样做。