Regex преобразовать в верхний регистр в VSVim - PullRequest
0 голосов
/ 02 апреля 2020

В настоящее время я использую :s/(-[a-z].*-)([a-z])/$1\U$2/., однако он просто удаляет символ после 2-го - вместо преобразования его в прописные буквы?

У меня есть файл CSS, и у меня есть несколько записи в виде ql-font-timesnewroman, ql-font-arial, ql-font-geneva и др. c. Я хочу преобразовать их в ql-font-Timesnewroman, ql-font-Arial, ql-font-Geneva, et c.

Я использую VSVim с VSCode, и я не уверен, какую версию Regex он использует (но я поверьте, это Javascript вариант).

Если я использую вариант PHP, он работает нормально. (https://regex101.com/r/8aZI2m/1)

Но если я использую вариант Javascript, он просто вставляет U в результат: ql-font-Utimesnewroman.

В VSCode , он идет дальше и просто вставляет \U. (ql-font-\Utimesnewroman).

Если я изменю регулярное выражение, чтобы оно выглядело более похожим на :s/(-[a-z].*-)([a-z])/$1/\U$2/., оно просто идет дальше и стирает 2-й матч вместо преобразования его в верхний регистр (ql-font-imesnewroman)

Есть ли какой-то особый синтаксис, который необходим VSVim / VSCode, чтобы его регулярное выражение совпадало и правильно заменялось на верхний регистр?

1 Ответ

0 голосов
/ 02 апреля 2020

Попробуйте эту комбинацию клавиш в комбинациях клавиш. json, которая вставляет фрагмент, чтобы вы могли использовать преобразование:

 {
    "key": "alt+b",              // whatever keybinding you wish
    "command": "editor.action.insertSnippet",
    "args": {
      "snippet": "${TM_SELECTED_TEXT/-font-(\\w+)/-font-${1:/capitalize}/g}""
    },
  },

Сначала вы выбираете текст, а затем запускаете фрагмент.

Это будет работать для:

ql-font-timesnewroman
// unrelated text here can be selected to and it will be unaffected.**
ql-font-arial

ql-font-timesnewroman, ql-font-arial, ql-font-geneva  // all in one line

Если ваш выбор включает в себя несвязанный текст, он не изменится, если он не соответствует регулярному выражению -font-(\\w+), используемому фрагментом - что обычно маловероятно.

Если у вас их много в файле, и вам неудобно выбирать весь файл и применять это преобразование, то сначала найдите с помощью регулярного выражения -font-(\w+) (обратите внимание, нет необходимости дважды экранировать \w в виджет Найти, но вы должны использовать \\w во фрагменте!) и Alt + Ввод выберет все совпадения, а затем вы можете вызвать фрагмент.

...