Vim:文本用逗号缩进长行,不打破引号?

Vim: text indent long line by comma, not breaking quoted values?

你有一个长列表,你想用逗号缩进它,这样值就不会在中间分开,以提高可读性。

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 中的非引号逗号上缩进一长行?

Vim 不考虑语法。

作为解决方法,您可以:

  • 根据每个用例手动执行;例如,对于您的示例文本,因为根本没有 space,您可以利用 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
    

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