Arhn - архитектура программирования

Как я могу вставить фрагмент в новую строку с помощью vscode?

Я пытаюсь сделать фрагмент vscode для python. Предположим, у меня есть такая строка кода:

my_var = call_some_function()

Я хотел бы дважды щелкнуть my_var, чтобы выбрать его, нажать клавишу, и это даст следующий результат:

my_var = call_some_function()
LOGGER.debug("my_var: %s", my_var)
<cursor is here>

Также это должно работать и для выражения, например, если я выберу «x + y + z» в этой строке и нажму клавишу:

call_function(x + y + z)

Он должен производить:

call_function(x + y + z)
LOGGER.debug("x + y + z: %s", x + y + z)
<cursor is here>

Очевидно, что лучше использовать отладчик. Но иногда нельзя использовать отладчик.



Ответы:


1

Как следует из ссылки @ Alex, я думаю, вам нужно будет использовать расширение макроса, чтобы это работало. Я предпочитаю multi-command, потому что для него доступна интервальная задержка (которая абсолютно необходимо для некоторых макросов, но не для вашего).

В ваших настройках:

"multiCommand.commands": [

    {
      "command": "multiCommand.debug",

      "sequence": [
        "editor.action.clipboardCopyAction",
        "editor.action.insertLineAfter",
        {
          "command": "editor.action.insertSnippet",
          "args": {
            "snippet": "LOGGER.debug(\"$CLIPBOARD: %s\", $CLIPBOARD)\n$0"
          }
        },
      ]
    }
]

Это сначала скопирует ваш выбор в буфер обмена, чтобы потом его можно было использовать во фрагменте. Затем вставьте пустую строку ниже и вставьте туда фрагмент (на случай, если в строке ниже уже есть какой-то код).

Запустите это с помощью привязки клавиш:

{
  "key": "ctrl+alt+d",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.debug" }
},

Это работает для обоих ваших примеров.

04.12.2018
  • Отлично работает, спасибо! Жаль, что вы, похоже, не можете сделать это с помощью фрагментов. Я никогда не слышал о multiCommand. Спасибо! 04.12.2018
  • editor.action.jumpToBracket, * 2 перед editor.action.insertLineAfter, он избегает печати в objet, array :) 03.10.2020

  • 2

    Это не совсем то, о чем просили, но это похоже на переменную $ CLIPBOARD:

    "log-clipboard": {
        "prefix": "log-clipboard",
        "body": [
            "LOGGER.debug('$CLIPBOARD: %s', $CLIPBOARD)",
            "$0"
        ],
        "description": "Log an expression from the clipboard"
    }
    

    Использовать:

    1. Выберите, что вы хотите записать, и нажмите Копировать.
    2. Идите туда, где вы хотите, чтобы журнал это
    3. Введите журнал-буфер обмена и нажмите Enter.

    Почти.

    03.12.2018
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..