VSCode Vim Поиск и замена группы захвата - PullRequest
0 голосов
/ 24 января 2020

Edit: я только что попробовал это в расширении VSVim в VS2019, и он работал как ожидалось. Я начинаю думать, что расширение VSCodeVim для VSCode не обрабатывает перехваты правильно?

Я пытаюсь найти в моем файле машинописного текста список переменных, которым еще не присвоено начальное значение, и установить для него значение = null.

  private __requestor: Req;
  private __feedback: FeedbackObject;
  private __dueDate: Calendar = null;
  private __priority: number = NaN;
  private __bigTest = TestObject;

Я использую следующую команду: :%s/(: [a-zA-Z]+);/\1 = null;/g

Я ожидаю, что вывод будет вставлен = null в строки 1, 2 и 5, но вместо этого он вставит \1 ,

Ожидается:

  private __requestor: Req = null;
  private __feedback: FeedbackObject = null;
  private __dueDate: Calendar = null;
  private __priority: number = NaN;
  private __bigTest: TestObject = null;

Факт:

  private __requestor\1 = null;
  private __feedback\1 = null;
  private __dueDate: Calendar = null;
  private __priority: number = NaN;
  private __bigTest\1 = null;

Что-то не так с моей командой regex / search & replace? Он похож на другие команды S & R, которые используют группы захвата в примерах, которые я видел, и я не видел никаких настроек для «включения» групп захвата.

Ответы [ 2 ]

1 голос
/ 28 января 2020

Очевидно, что в VSCodeVim группы захвата распознаются с $1, $2, et c .. вместо \1, \2, et c ...

Так , используя это сработало:

:%s/(: [a-zA-Z]+);/$1 = null;/g

Источник: https://github.com/VSCodeVim/Vim/issues/4502

1 голос
/ 25 января 2020

Использование большего количества групп регулярных выражений:

:%s/\v(__\w+)(:| \=) ([A-Z][a-zA-Z]+);/\1: \3 = null; 

 % ....................... whole file
 \v ...................... very magic (avoid some scapes)
 (__\w+)  ................ first group (matches __word)
 (:| \=)  ................ second group, followed by : or space plus =
 ([A-Z][a-zA-Z]+) ........ third group (matches CamelCaseWords) 
 ; ....................... followed by literal ;

OBS: Что затрудняет достижение правильного результата, так это то, что строка 5 имеет другой шаблон.

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