Как заменить переменную во фрагменте кода Visual Studio? - PullRequest
0 голосов
/ 10 января 2020

Я использую javascript фрагмент с привязкой клавиш.

У меня есть следующий код:

    {
        "key": "alt+c", 
        "command": "editor.action.insertSnippet",
        "when": "editorTextFocus",
        "args": {
            "snippet": " const $TM_CURRENT_WORD = $1"
        }
    },

Если я печатаю box и затем нажимаю alt + c, я получаю ...

box const box = 

Но я ожидал

const box =

Как мне этого добиться?

1 Ответ

0 голосов
/ 10 января 2020

Фрагменты всегда вставляют текст, где бы ни находился курсор в момент запуска фрагмента - вот почему вы видите поведение, которое вы получаете. Если слово было выбрано впервые, вставка заменит это слово как обычное.


Самый простой способ - просто выбрать текст box, а затем alt + c и вы получите свой результат. Но с дополнительным шагом выбора.


Вот и решение для макроса.

Используя расширение макроса, например multi-command , установите это в своих настройках . json:

 "multiCommand.commands": [
    {
      "command": "multiCommand.insertConst",  // whatever name you want to give it
      "sequence": [
        "cursorWordLeftSelect",
        {
          "command": "editor.action.insertSnippet",
          "args": {
              "snippet": "const $TM_SELECTED_TEXT = $1"
          }
        }
      ]
    }
]

и некоторые привязки клавиш:

{
  "key": "alt+c",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.insertConst" },  // use same name here
  "when": "editorTextFocus"
},

или вы можете просто изменить свой фрагмент, чтобы сначала не вводить имя переменной. Вы должны вызвать фрагмент, затем ввести имя переменной tab и затем ее значение следующим образом:

{
    "key": "alt+c", 
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "snippet": " const $1 = $2"
    }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...