How can I remove duplicate lines in Visual Studio Code?

Visual Studio-Code

Visual Studio-Code Problem Overview


Say you have the following text:

abc
123
abc
456
789
abc
abc

I want to remove all "abc" lines and just keep one. I don't mind sorting. The result should be like this:

abc
123
456
789

Visual Studio-Code Solutions


Solution 1 - Visual Studio-Code

If the order of lines is not important

Sort lines alphabetically, if they aren't already, and perform these steps:
(based on this related question: https://stackoverflow.com/q/1573361/3258851)</sub>

  1. Control+F

  2. Toggle "Replace mode"

  3. Toggle "Use Regular Expression" (the icon with the .* symbol)

  4. In the search field, type ^(.*)(\n\1)+$

  5. In the "replace with" field, type $1

  6. Click the Replace All button ("Replace All").

If the order of lines is important so you can't sort

In this case, either resort to a solution outside VS Code (see here), or - if your document is not very large and you don't mind spamming the Replace All button - follow the previous steps, but in steps 4 and 5, enter these:
(based on https://stackoverflow.com/q/48722064/3258851)</sub>

> Caution: Blocks for files with too many lines (1000+); may cause VS Code to crash; may introduce blank lines in some cases.

  • search: ((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?

  • replace with: $1

and then click the "Replace All" button as many times as there are duplicate occurrences.

You'll know it's enough when the line count stops decreasing when you click the button. Navigate to the last line of the document to keep an eye on that.

Solution 2 - Visual Studio-Code

Coming in vscode v1.62 is a command to eliminate duplicate lines from a selection:

Delete Duplicate Lines in the Command Palette

or

editor.action.removeDuplicateLines as a command in a keybinding

(there is no default keybinding for this command)


Here is a very interesting extension: Transformer

Features:

  • Unique Lines As New Document
  • Unique Lines


  • Align CSV
  • Align To Cursor
  • Compact CSV
  • Copy To New Document
  • Count Duplicate Lines As New Document
  • Encode / Decode
  • Filter Lines As New Document
  • Filter Lines
  • Join Lines
  • JSON String As Text
  • Lines As JSON String Array
  • Normalize Diacritical Marks
  • Randomize Lines
  • Randomize Selections
  • Reverse Lines
  • Reverse Selections
  • Rotate Backward Selections
  • Rotate Forward Selections
  • Select Highlights
  • Select Lines
  • Selection As JSON String
  • Sort Lines By Length
  • Sort Lines
  • Sort Selections
  • Split Lines After
  • Split Lines Before
  • Split Lines
  • Trim Lines
  • Trim Selections

> ### Unique Lines > > Removes duplicate lines from the document Operates on selection or > current block if no selection
> > ### Unique Lines As New Document
> > Unique lines are opened in a new document Operates on selection or > current block if no selection

I haven't played with it much besides the "Unique Lines" command but it seems quite nicely done (including attempting a macro recorder!).

Solution 3 - Visual Studio-Code

To add to @Marc.2377 's reply.

If the order is important and you don't care that you just keep the last of the duplicate lines, simply search for the following regexp if you want to only remove duplicte non-empty lines

^(.+)\n(?=(?:.*\n)*?\1$)

If you also want to remove duplicate empty lines, use * instead of +

^(.*)\n(?=(?:.*\n)*?\1$)

and replace with nothing.

Screenshot of filled search-and-replace box

This will take a line and try to find ahead some more (maybe 0) lines followed by the exact same line taken. It will remove the taken line.

This is just a one-shot regex. No need to spam the replace button.

This now also takes the comment of @awk into account, in where the last line has to have a linefeed in order to be identified as a duplicate. This is no longer the case now by excluding the \n from the line to search and adding a $ to the line found.

Solution 4 - Visual Studio-Code

I just had the same issue and found the Visual Studio Code package "Sort lines". See the Visual Studio Code market place for details (e.g. Sort lines).

This package has the option "Sorting lines (unique)", which did it for me. Take care of any white spaces at the beginning/end of lines. They influence whether lines are considered unique or not.

Solution 5 - Visual Studio-Code

Install the DupChecker extension, hit F1, and type "Check Duplicates".

It will check for duplicates and ask if you want to remove them.

Solution 6 - Visual Studio-Code

Try find and replace with a regular expression.

  • Find: ^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$

  • Replace: $1$2

It is possible to introduce some variance in the first group.

Solution 7 - Visual Studio-Code

[Sublime Text 3][1]

It has blisteringly fast native permutation functions.

  • Edit > Permute Lines > Unique or ⇧⌘U, and
  • Edit > Permute Selections > Unique

[Visual Studio Code][2] is my daily driver. But, I keep [Sublime Text][1] on standby for these situations.

[1]: https://www.sublimetext.com/ "Sublime Text 3" [2]: https://code.visualstudio.com/ "Visual Studio Code"

Solution 8 - Visual Studio-Code

If you don't mind some Vim in your VS Code. You can install Vim emulation plugin.

Then you can use vim commands

:sort u

It will sort lines and it will remove duplicates

Solution 9 - Visual Studio-Code

Not actually in Visual Studio Code, but if it works, it works.

  1. Open a new Excel spreadsheet
  2. Paste the data into a column
  3. Go to the Data tab
  4. Select the column of data (if you haven't already)
  5. Click Remove Duplicates (somewhat in the middle of the bar)
  6. Click OK to remove duplicates.

It is not the best answer, as you specified Visual Studio Code, but as I said: If it works, it works :)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionYounesView Question on Stackoverflow
Solution 1 - Visual Studio-CodeMarc.2377View Answer on Stackoverflow
Solution 2 - Visual Studio-CodeMarkView Answer on Stackoverflow
Solution 3 - Visual Studio-CodeSkeeveView Answer on Stackoverflow
Solution 4 - Visual Studio-CodeSimonAxView Answer on Stackoverflow
Solution 5 - Visual Studio-Codeperfecto25View Answer on Stackoverflow
Solution 6 - Visual Studio-CodeLavockView Answer on Stackoverflow
Solution 7 - Visual Studio-Codessent1View Answer on Stackoverflow
Solution 8 - Visual Studio-Codefalwick falwickView Answer on Stackoverflow
Solution 9 - Visual Studio-CodeNostraDavidView Answer on Stackoverflow