Выполните математику для переменных фрагмента VSCode - PullRequest
0 голосов
/ 12 февраля 2020

Моя цель состоит в том, чтобы VSCode вставлял временную метку всякий раз, когда я нажимаю Ctrl + Shift + I, которая выглядит следующим образом:

[15:03]

В настоящее время меня связывает следующая привязка клавиш:

{
    "key": "ctrl+shift+i",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "snippet": "[$CURRENT_HOUR:$CURRENT_MINUTE]"
    }
}

Проблема в том, что у него один час (сейчас у меня на системных часах 14:03). Вероятно, это связано с некоторым летним временем или проблемой часового пояса, и я не думаю, что это настраивается в VSCode.

Меня не волнует, что происходит в полночь, поэтому есть какой-то хакерский способ выполнения математики на эти переменные? В идеале что-то вроде этого

{
    "key": "ctrl+shift+i",
    "command": "editor.action.insertSnippet",
    "when": "editorTextFocus",
    "args": {
        "snippet": "[${$CURRENT_HOUR - 1}:$CURRENT_MINUTE]"
    }
}

Конечно, в настоящее время это просто выводит

[${15-1}:06]

1 Ответ

0 голосов
/ 12 февраля 2020

Как правило, нет никакой математики для переменной сниппета без действительно уродливого преобразования условной замены. Тем не менее, какой-то блестящий парень нашел способ сделать простое увеличение / уменьшение на 1 (или 10 или 0,1 или кратные и их комбинации!).

См. Как увеличить переменную, например, номер строки, во фрагменте vscode , а также Найти номер и заменить + 1 . {Но, похоже, никто этого не заметил.]

В вашем случае, если вы подаете в суд на расширение макроса multi-command , введите это в свои настройки. json:

"multiCommand.commands": [

  {
    "command": "multiCommand.decrementHourInSnippet",
    "sequence": [
      {
        "command": "editor.action.insertSnippet",
        "args": {
          "snippet": "[$CURRENT_HOUR"
        }
      },
      "editor.emmet.action.decrementNumberByOne",
      {
        "command": "editor.action.insertSnippet",
        "args": {
          "snippet": ":$CURRENT_MINUTE]"
        }
      }
    ]
  }
]

чтобы трюк emmet decrementNumberByOne сработал, в строке не должно быть двух чисел, одно из которых вы хотите уменьшить. Вот почему ваш фактический фрагмент делится пополам, с добавлением минут после того, как произошло уменьшение.

Теперь назначьте выбранную привязку клавиш этому макросу в сочетаниях клавиш. json:

{
  "key": "ctrl+shift+i",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.decrementHourInSnippet" }
}

и все работает. Демонстрация:

decrement hour in snippet


Конечно, как вы сказали, вам не нужно переходить от 0 к -1, что Я предполагаю, что это будет после полуночи в течение часа.

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