Как удалить повторяющиеся строки в коде Visual Studio?

Скажем, у вас есть следующий текст:

abc
123
abc
456
789
abc
abc

Я хочу удалить все строки "abc" и просто сохранить их. Я не против сортировки. Результат должен выглядеть следующим образом:

abc
123
456
789

Ответ 1

Если порядок строк не важен

Сортируйте строки в алфавитном порядке, если они еще не созданы, и выполните следующие действия:
(на основе этого связанного вопроса: как найти и удалить повторяющиеся строки из файла с помощью регулярных выражений?)

  1. Control + F

  2. Переключить режим "Заменить"

  3. Переключить "Использовать регулярное выражение" (значок с символом .*)

  4. В поле поиска введите ^(.*)(\r?\n\1)+$

  5. В поле " заменить на " введите $1

  6. Нажмите the Replace All button ("Заменить все").

Если порядок строк важен, поэтому вы не можете сортировать

В этом случае либо прибегайте к решению вне VS-кода (см. Здесь), либо - если ваш документ не очень большой, и вы не против спама кнопки "Заменить все" - выполните предыдущие шаги, но в шагах 4 и 5, введите следующие данные:
(на основе удаления отдельных повторяющихся строк без сортировки)

Внимание: блоки для файлов со слишком большим количеством строк (1000+); может привести к сбою кода VS; может в некоторых случаях вводить пустые строки.

  • поиск: ((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?

  • заменить: $1

а затем нажмите кнопку "Заменить все" столько раз, сколько есть дубликатов.

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

Ответ 2

Просто была та же проблема и найден пакет VSCode "Сортировка строк". Подробнее см. на рынке VSCode (например, https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines).

В этом пакете есть опция "Сортировка строк (уникальная)", которая сделала это для меня. Позаботьтесь о любых пробелах в начале/конце строк, они влияют на то, считаются ли линии уникальными или нет.

Ответ 3

Установите расширение DupChecker,

нажмите F1, введите "Проверить дубликаты"

он проверит обманы и спросит, хотите ли вы их удалить

Ответ 4

Попробуйте найти и заменить с помощью регулярного выражения.

  • Найти: ^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$

  • Заменить: $1$2

В первой группе можно ввести некоторую дисперсию.

Ответ 5

Вот очень интересное расширение: Transformer

Особенности

Unique Lines
Unique Lines As New Document
Filter Lines
Filter Lines As New Document
Sort Lines
Sort Lines By Length
Align To Cursor
Align CSV
Compact CSV
Copy To New Document
Select Lines
Lines As JSON
Trim Lines
Count Duplicate Lines As New Document
Macros

Для удаления повторяющихся строк:

Removes duplicate lines from the document

Operates on selection or current block if no selection

Я не играл с ним много, кроме команды "Уникальные строки", но это выглядит довольно хорошо (в том числе попытка макрокорректора!).