【问题标题】:How do I make text wrapping match current indentation level in vim?如何使文本换行匹配vim中的当前缩进级别?
【发布时间】:2009-04-17 08:41:31
【问题描述】:

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

【问题讨论】:

    标签: python vim word-wrap


    【解决方案1】:

    我问了same question on SuperUser,最终找到了这个问题,找到了补丁,然后updated the patch 与Fedora 11 中的Vim 7.2.148 一起工作。

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

    【讨论】:

    • 随着 Fedora 发布 vim 更新,我正在更新补丁。请参阅retracile.net/wiki/VimBreakIndent 了解最新信息。
    • 感谢您维护补丁。我能够在 Ubuntu 上成功应用 7.3 版本。
    • 我试过下载补丁,但是没有链接。我在哪里可以找到它?这可能是我现在最想要的一件事。
    • 一次重大软件升级留下了一些损坏的链接。我现在已经修好了。
    【解决方案2】:

    您正在寻找breakindent

    您可能还想参考this thread

    【讨论】:

    【解决方案3】:

    我推荐这个 vimscript:

    http://www.vim.org/scripts/script.php?script_id=974

    “此 Python 缩进脚本试图更接近 PEP 8 (http://www.python.org/peps/pep-0008.html) 中建议的内容。特别是,它正确处理由开(括号)、[方括号] 和 {大括号} 隐含的续行,并且它以不同的方式缩进多行 if/for/while 语句。"

    【讨论】:

    • 这当然是一个有用的脚本,但它似乎并没有满足我的实际要求。我想要一些东西来帮助处理长线的视觉位置,而不是自动缩进的位置。
    • 该脚本还将添加换行符并正确缩进长行,因此它们成为 80 个字符以下的格式良好的行。
    【解决方案4】:

    有关控制 Python 代码的缩进,请参阅:h ft-python-indent。例如,如果你在有一个未闭合的括号时换行,这将使 Vim 缩进两倍 shiftwidth

    let g:pyindent_open_paren = '&sw * 2'
    

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 这实际上不是问题所要问的——关键是当代码必须被包装以适合查看窗口时,Vim 如何显示代码。
      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 2020-08-14
      • 1970-01-01
      相关资源
      最近更新 更多