【问题标题】:How to align expressions between alignment regex in Sublime Text 3?如何在 Sublime Text 3 中对齐正则表达式之间对齐表达式?
【发布时间】:2015-08-18 12:47:22
【问题描述】:

我在 Sublime Text 3 中有以下两行:

Rectangle(Maxwell, "MagnetsWEstart" , "r_ta - h_pm",  42,"NdFe35", True, "WE")
Rectangle(Maxwell, "MagnetsWEend", "r_ta", 1984.42, "NdFe35",False, "WE")

我想将所有逗号和前面的文字向右对齐:

Rectangle(Maxwell, "MagnetsWEstart", "r_ta - h_pm",      42, "NdFe35",  True, "WE")
Rectangle(Maxwell,   "MagnetsWEend",        "r_ta", 1984.42, "NdFe35", False, "WE")

我下载了Align Tab 包并创建了键绑定

{ "keys": ["ctrl+shift+a"], "command": "align_tab", "args" : {"user_input" : ","} }

结果已经接近我想要的了:

Rectangle(Maxwell , "MagnetsWEstart" , "r_ta - h_pm" , 42      , "NdFe35" , True  , "WE")
Rectangle(Maxwell , "MagnetsWEend"   , "r_ta"        , 1984.42 , "NdFe35" , False , "WE")

但是我怎样才能将逗号之间的表达式向右对齐,并在逗号前添加空格?这甚至可能吗?

【问题讨论】:

    标签: regex sublimetext3 sublimetext


    【解决方案1】:

    我找到了另一个解决方案。事实证明,对齐选项卡有一个内置选项,您可以将其添加到您的正则表达式中。只需按正则表达式对齐并输入,/r。这意味着证明正确

    【讨论】:

    • 这是一个不错的折衷方案,不能解决额外的逗号,但我宁愿使用它。
    • @thewaywewalk,附加逗号?您是说额外的空间吗?
    • 是的,,/r 在逗号前添加了一个空格。但别担心,我可以忍受。感谢您的帮助!
    • @thewaywewalk,你可以匹配`(?=,)`并替换为空字符串。 :)
    • 我真的不知道为什么我没有为你的建议找到匹配项,但是找到"find": "(\\s,)","replace": ",", 终于在 reg_replace 中成功了。
    【解决方案2】:

    与Align Tab对齐后,匹配

    [(,] *\K(.+?)( +)(?=,)
    

    替换为\2\1

    【讨论】:

    • 使用 find&replace(正则表达式模式)我没有匹配项。不幸的是,我对正则表达式的了解不够多,无法找到错误。它只会删除逗号,不是吗?
    • @thewaywewalk,这应该在从问题的最后两行中显示的“对齐”选项卡中获得结果后完成。它只会占用单词后面的空格并将它们放在单词的前面。
    • 是的,我在问题的最后两行运行了您的正则表达式,但没有找到匹配项。你在 Sublime 中试过吗?也许有一些 Sublime 需要特别考虑?
    • @thewaywewalk,这很奇怪,我得到了 10 个匹配项。您确定在您的搜索框中打开了正则表达式匹配吗?
    • 顺便说一句,我更新了正则表达式,出现了一个小问题,因为 "r_ta - h_pm" 有空格。
    【解决方案3】:

    ndn's answer 启发的以下步骤最终得到了预期的结果:

    1) 安装reg_replaceAlign tab

    2) 包:Reg_Replace -> 设置 -> 用户:

    {
        "replacements": {
            "commaRightRegex": {
                "find": "(\\s,)",
                "replace": ",",
                "greedy": true,
                "case": false
            }
        },
        "selection_only": true,
    }
    

    3) 工具 -> 新插件 -> 包含run_multiple.py

    4) 键绑定 -> 用户 -> 添加:

    { "keys": ["ctrl+shift+a"],
        "command": "run_multiple_commands",
        "args": {
            "commands": [
                {"command": "align_tab", "args" : {"user_input" : ",/r"}},
                {"command": "reg_replace", "args": {"replacements": ["commaRightRegex"]}}
            ]
        }
    }
    

    最终将通过一个键盘快捷键启用所需的输出:

    Rectangle(Maxwell, "MagnetsWEstart", "r_ta - h_pm",      42, "NdFe35",  True, "WE")
    Rectangle(Maxwell,   "MagnetsWEend",        "r_ta", 1984.42, "NdFe35", False, "WE")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      相关资源
      最近更新 更多