如何使文本换行符合vim中的当前缩进级别?

时间:2009-04-17 08:41:31

标签: python vim textwrapping

有没有人知道如何让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。)

5 个答案:

答案 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应该这样做。