首页 > 解决方案 > Vim:文本用逗号缩进长行,而不是打破引用的值?

问题描述

你有一个很长的列表,你想用逗号缩进它,这样值就不会在中间打断,更易读。

indent = ['11111_1111111111111111','11111_111111111111111111','11111_1111','11111_111111111111111','11111_1111111111111111',\ #Indentation should look something like this, preferably to width of the editor.
        '11111_111111111111111','11111_111111111111','11111_1111111111111111111111','11111_111111111111111111111111','11111_1111111111111111111111111',\
        '1111_12_11111_1111111111111111111_11111_1111111111111111','1111_12_11111_1111111111111111111_11111_111111111111111111',\
        '1111_12_11111_1111111111111111111_11111_1111','1111_12_11111_1111111111111111111_11111_111111111111111','1111_12_11111_1111111111111111111_11111_1111111111111111',\
        '1111_12_11111_1111111111111111111_11111_111111111111111','1111_12_11111_1111111111111111111_11111_111111111111','1111_12_11111_1111111111111111_11111_1111111111111111111',\
        '1111_12_11111_1111111111111111_11111_111111111111111111','1111_12_11111_1111111111111111_11111_1111','1111_12_11111_1111111111111111_11111_111111111111111',\
        '1111_12_11111_1111111111111111_11111_1111111111111111','1111_12_11111_1111111111111111_11111_111111111111111','1111_12_11111_1111111111111111_11111_111111111111',\
        '1111_13_11111_1111111111111111111_11111_1111111111111111','1111_13_11111_1111111111111111111_11111_111111111111111111','1111_13_11111_1111111111111111111_11111_1111',\
        '1111_13_11111_1111111111111111111_11111_111111111111111','1111_13_11111_1111111111111111111_11111_1111111111111111','1111_13_11111_1111111111111111111_11111_111111111111111',\
        '1111_13_11111_1111111111111111111_11111_111111111111','1111_13_11111_1111111111111111_11111_1111111111111111111','1111_13_11111_1111111111111111_11111_111111111111111111',\
        '1111_13_11111_1111111111111111_11111_1111','1111_13_11111_1111111111111111_11111_111111111111111','1111_13_11111_1111111111111111_11111_1111111111111111',\
        '1111_13_11111_1111111111111111_11111_111111111111111','1111_13_11111_1111111111111111_11111_111111111111','1111_14_11111_1111111111111111111_11111_1111111111111111',\
        '1111_14_11111_1111111111111111111_11111_111111111111111111','1111_14_11111_1111111111111111111_11111_1111','1111_14_11111_1111111111111111111_11111_111111111111111',\
        '1111_14_11111_1111111111111111111_11111_1111111111111111','1111_14_11111_1111111111111111111_11111_111111111111111','1111_14_11111_1111111111111111111_11111_111111111111',\ #HOW TO INDENT the following like the above?
        '1111_14_11111_1111111111111111_11111_1111111111111111111','1111_14_11111_1111111111111111_11111_111111111111111111','1111_14_11111_1111111111111111_11111_1111','1111_14_11111_1111111111111111_11111_111111111111111','1111_14_11111_1111111111111111_11111_1111111111111111','1111_14_11111_1111111111111111_11111_111111111111111','1111_14_11111_1111111111111111_11111_111111111111','11141_11111_111111111111111','11141_11111_111111111111111111','11141_11111_1111111111111111111','11141_11111_111111111111','11141_11111_1111111111111111','11141_11111_1111','11141_11111_111111111111111','11141_11111_1111111111111111','11141_11111_11111111_71111','11141_11111_11111111_141111','11141_11111_11111111_211111','11141_11111_11111111_11111111111111111','11141_11111_111111111111111','11141_11111_111111111111111111','11141_11111_1111111111111111111','11141_11111_111111111111','11141_11111_1111111111111111','11141_11111_1111','11141_11111_111111111111111','11141_11111_1111111111111111','11141_11111_11111111_71111','11141_11111_11111111_141111','11141_11111_11111111_211111','11141_11111_11111111_11111111111111111','11181_11111_111111111111111','11181_11111_111111111111111111','11181_11111_1111111111111111111','11181_11111_111111111111','11181_11111_1111111111111111','11181_11111_1111','11181_11111_111111111111111','11181_11111_1111111111111111','11181_11111_11111111_71111','11181_11111_11111111_141111','11181_11111_11111111_211111','11181_11111_11111111_11111111111111111','11181_11111_111111111111111','11181_11111_111111111111111111','11181_11111_1111111111111111111','11181_11111_111111111111','11181_11111_1111111111111111','11181_11111_1111','11181_11111_111111111111111','11181_11111_1111111111111111','11181_11111_11111111_71111','11181_11111_11111111_141111','11181_11111_11111111_211111','11181_11111_11111111_11111111111111111','111161_11111_111111111111111','111161_11111_111111111111111111','111161_11111_1111111111111111111','111161_11111_111111111111','111161_11111_1111111111111111','111161_11111_1111','111161_11111_111111111111111','111161_11111_1111111111111111','111161_11111_11111111_71111','111161_11111_11111111_141111','111161_11111_11111111_211111','111161_11111_11111111_11111111111111111','111161_11111_111111111111111','111161_11111_111111111111111111','111161_11111_1111111111111111111','111161_11111_111111111111','111161_11111_1111111111111111','111161_11111_1111','111161_11111_111111111111111','111161_11111_1111111111111111','111161_11111_11111111_71111','111161_11111_11111111_141111','111161_11111_11111111_211111','111161_11111_11111111_11111111111111111']

如何在 Vim 中的非引号逗号上缩进一长行?

标签: vimindentation

解决方案


Vim 不考虑语法。

作为一种解决方法,您可以:

  • 根据每个用例手动执行;例如,对于您的示例文本,因为根本没有空格,您可以利用该gq命令;您可以在最后一行中执行以下操作:

    :s/,/, /g
    gql
    :'[,']s/$/\\
    

    然后手动修复看起来仍然错误的地方;(注意:上面的代码没有经过大量测试,它可能不适合你,取决于'textwidth''formatoptions'...)

  • 使用外部格式化程序。我不知道您的示例文本是哪种语言(结尾的反斜杠让我想知道),但让我们考虑一下它是一些 python 代码的示例。
    首先安装一个插件,如vim-autoformat。它将帮助您将系统中现有的外部格式化程序集成到 Vim 中。
    然后安装特定语言的格式化程序。如果您使用的是 python,则可能已经安装了autopep8 。
    如果您只想格式化文件的一部分,请将所需部分复制到新缓冲区中,然后运行:

    :setf python
    :set textwidth=100   " <-- set the text width as you wish
    :Autoformat
    

    您的缓冲区将以一种智能的方式包装。许多选项可用,具体取决于外部格式化程序。


推荐阅读