VS Code: как создать фрагмент кода Python, который после попадания строки или выражения будет преобразовывать его - PullRequest
0 голосов
/ 04 марта 2019

возможно ли сделать фрагмент кода Python, который преобразует код, как я объясняю в моем примере?

"Hello world".print - вкладка нажатия преобразует его в

print("Hello world")

, будет хорошо, еслиавтоматически понимает, является ли это строкой или выражением, поэтому, если я сделаю переменную, например, «a», и напишу «.print» в конце и нажму на вкладку, она не добавит «» или «», поэтому таким образом она не будет преобразована вчто-то другое.

a = 10    
a.print - hitting tab

преобразует его в:

print(a)

, а не в:

print("a")

Прогресс (если можно так сказать)

так

TM_CURRENT_LINE

работает неправильно (может быть).

So "$ {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"
        }

Неправильно ли я или этот супруг удалил все в этой строке?

Ответы [ 2 ]

0 голосов
/ 16 августа 2019

Вот макрос, который, я думаю, делает то, что вы хотите.Используя расширение многострочного макроса , поместите его в файл 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

Поместите курсор в конец переменной (единственное, что есть в строке) и с помощью клавиш привязки.

0 голосов
/ 04 марта 2019

Я не думаю, что это может точно соответствовать тому, что вам нужно.Как насчет чего-то вроде:

"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.См. Переменные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...