13

有谁知道让 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选项,但该选项仍在“等待更新的补丁”列表中(请参阅Vim TODO)。所以我想知道让 vim 工作的最简单方法breakindent是什么?(我不在乎我必须使用什么版本的 vim。)

4

5 回答 5

7

在 SuperUser 上问了同样的问题,最终找到了这个问题,找到了补丁,并更新了补丁以与 Fedora 11 中的 Vim 7.2.148 一起使用。

您可以使用yumdownloader --source vim来获取源 RPM。然后在spec文件中添加Patch3312:一行%patch3012 -p1一行,构建rpm。

于 2009-11-20T17:21:46.427 回答
4

您正在寻找breakindent

您可能还想参考这个线程

于 2009-04-17T15:38:33.137 回答
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] 和 {braces} 正确,并且它以不同的方式缩进多行 if/for/while 语句。”

于 2009-04-18T06:37:56.673 回答
0

有关控制 Python 代码的缩进,请参阅:h ft-python-indentshiftwidth例如,如果您在有一个未闭合的括号时执行换行符,这将使 Vim 缩进两次:

let g:pyindent_open_paren = '&sw * 2'

但是&sw * 2是默认设置,所以不确定为什么它不适合您。它适用于手动换行符或textwidth诱导换行符。

.vimrc在 Vim 进入 Python 模式之前,上述设置需要或需要以某种方式设置。确保:setf python或您处于 Python 模式。

于 2009-04-18T07:16:01.700 回答
-1

我认为 set textwidth=80 应该这样做。

于 2009-04-17T08:44:05.317 回答