VS Code:如何制作一个python片段,在字符串或表达式命中选项卡之后将对其进行转换

问题描述 投票:2回答:1

是否有可能制作一个python片段来转换像我在我的例子中解释的代码?

"Hello world".print - 命中标签将其转换为

print("Hello world")

如果自动理解它是字符串或表达式会很好,所以如果我创建一个变量例如“a”并且我在结尾处写“.print”并点击标签它将不会添加“”或“因此以这种方式它不会将其转换为其他内容。

a = 10    
a.print - hitting tab

将其转换为:

print(a)

不进:

print("a")

进步(如果可以这样说)

所以

TM_CURRENT_LINE

无法正常工作(可能)。

所以“$ {TM_CURRENT_LINE / [0-9a-z。] // g}”它应该删除每个数字,小写字符和“。”从线。这段正则表达式代码(片段)有效但不是真的。

当我写作

mytext.py - hit tab/enter

它删除前缀点之间的所有内容

enter image description here

图片中使用的代码段。

"Print to console - test": {
            "scope": "python",
            "prefix": ".print",
            "body": [
                "${TM_CURRENT_LINE/[0-9a-z.]//g}"
                ],
            "description": "Log output to console"
        }

我错了还是这个配偶要删除该行中的所有内容?

python visual-studio-code code-snippets
1个回答
1
投票

我认为这不可能完全符合你的需要。怎么样的:

"Print": {
    "prefix": ".print",
    "body": [
        "print(${TM_CURRENT_LINE/(.*)\\..+$/$1/})$0"
    ],
    "description": "Print"
}

如果我写a.print并点击ENTER这将是输出:

aprint(a)

如果我写“a”.print这将是输出:

"a"print("a")

然后你应该删除第一部分。这是基于我所知道的,到目前为止,做一些搜索并没有产生更好的解决方案。

如果你在包含其他语句的行上使用它会有一些问题,因为它需要TM_CURRENT_LINE。见Variables


0
投票

这是我认为你想做的宏。使用multi-line macro extension,将其放入您的settings.json:

 "multiCommand.commands": [

    {
      "command": "multiCommand.printVariable",
      "interval": 150,

      "sequence": [
        "cursorHomeSelect",
        "editor.action.clipboardCutAction",
        {
          "command": "editor.action.insertSnippet",
          "args": {
            "snippet": "print($CLIPBOARD)"
          }
        }
      ]
    }
  ]

和键绑定到keybindings.json以触发上面的宏:

{
    "key": "alt+p",
    "command": "multiCommand.printVariable",
    "when": "editorFocus"
  },

现在看演示:

demo gif of macro print var

将光标放在变量的末尾(仅在线),并使用键绑定触发。

© www.soinside.com 2019 - 2024. All rights reserved.