Код Visual Studio: как автоматизировать простой поиск и замену регулярных выражений?

Я пытаюсь создать простую задачу поиска и замены регулярного выражения в коде Visual Studio.

В настоящее время я копирую из AD некоторых пользователей во временный файл в коде Visual Studio и удаляю «CN =» в начале строки и всю дополнительную информацию после первого «,» (регулярное выражение: ,.*$). Это отлично работает с функцией «Найти и заменить» в VSCode, но мне приходится вводить это вручную каждый раз, когда я хочу удалить это.

Итак, вопрос в том, можно ли автоматизировать такого рода задачи? Я знаю, что есть несколько внешних инструментов (https://code.visualstudio.com/docs/editor/tasks), но я изо всех сил пытаюсь заставить его работать...

Изменить: Запрошен пример (моё регулярное выражение работает, проблема не в этом:/. Мне нужен пример, как автоматизировать эту задачу...)

ПРИМЕР

CN=Test User,OU=Benutzer,OU=TEST1,OU=Vert,OU=ES1,OU=HEADQUARTERS,DC=esg,DC=corp

Ожидаемый результат

Test User

person Oskar    schedule 03.04.2018    source источник
comment
Пожалуйста, предоставьте пример ввода и ожидаемый результат.   -  person Rodrigo Ferreira    schedule 03.04.2018
comment
Отредактировал мой ответ и добавил пример   -  person Oskar    schedule 03.04.2018


Ответы (3)


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

https://marketplace.visualstudio.com/items?itemName=joekon.ssmacro#overview

Похоже, регулярное выражение придерживается:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

Пример

Создайте файл regex.json:

[{
    "command": "ssmacro.replace",
    "args": {
        "info": "strip out EOL whitespace",
        "find": "\\s+$",
        "replace": "",
        "all": true,
        "reg": true,
        "flag": "gm"
    }
}]

"info" просто напоминание, ничего не делает.

Установите ярлык в keybindings.json:

"key": "ctrl+9",
"command": "ssmacro.macro", "args": {"path": "C:\\...\\regex.json"}

Вы можете объединить несколько команд вместе [{...},{...}], что полезно для применения всего набора операций регулярных выражений за один раз.

person Phil B    schedule 02.08.2018
comment
спасибо за ответ, он мне очень помог. Но не могли бы вы добавить пример объединения макросов или пакетной обработки? Мне нужно более одной замены текста в одном макросе - person halliballi; 05.12.2018
comment
извините за беспокойство, нашел решение для партии. просто добавьте новый блок, как у вас между [] и используйте запятую для разделения этих командных блоков - person halliballi; 05.12.2018
comment
Я использую то же расширение, но параметр all не сработал? Если установлено значение false, ничего не заменяется. если установлено значение true, заменяется только одно совпадение (каждое выполнение). - person Syrlia; 18.12.2018
comment
Это в документации. Параметр all сообщает, происходит ли операция только в текущем выделении или во всем документе. См. developer.mozilla.org/en-US/docs. /Web/JavaScript/Guide/ для флагов, которые необходимы для использования этого. Возможно, вам не хватает g. - person Phil B; 19.12.2018
comment
Нет необходимости в косвенности в файле JSON: будучи макросом с одним действием, его можно напрямую привязать к ключу с помощью ssmacro.replace. - person lapo; 01.03.2019

На сегодняшний день кажется, что это все еще невозможно без расширения. Вот еще 2 расширения, кроме предложенного в принятом ответе (оба также с открытым исходным кодом):

Пакетный заменитель (но это не работает на документах, открытых в редакторе: «у вас должна быть открыта папка для редактирования и все файлы в ней будут обновлены».*)

Заменить правила: вы просто добавляете несколько правил в свой settings.json (откройте палитру с помощью F1 или ctrl+shift+p и выберите Preferences: open settings (JSON)).

"replacerules.rules": {
    "Remove trailing and leading whitespace": {
        "find": "^\\s*(.*)\\s*$",
        "replace": "$1"
    },
    "Remove blank lines": {
        "find": "^\\n",
        "replace": "",
        "languages": [
            "typescript"
        ]
    }
}
person MagTun    schedule 06.09.2019
comment
Расширение в принятом ответе распространяется под лицензией MIT, которая является наименее ограничительной из всех лицензий с открытым исходным кодом quora.com/ - person Diego Shevek; 20.01.2020
comment
Упс, извините, я изменил свой ответ. - person MagTun; 21.01.2020

Папка расширений: %USERPROFILE%\.vscode\extensions

person bobledev-4593    schedule 28.01.2021