Gids voor het sorteren van lijnen in Vim

Gids Voor Het Sorteren Van Lijnen In Vim



Om lijnen in Vim te sorteren, kunt u het ingebouwde soort commando dat regels sorteert op een gedefinieerd bereik. Normaal gesproken worden alle regels in het document gesorteerd als er geen bereik is opgegeven.

Als u bijvoorbeeld het hele document wilt sorteren, gebruikt u de :soort commando in de NORMALE modus. Als u daarentegen alleen specifieke regels wilt sorteren, gebruikt u de :x,y sorteren commando, waar X En En definieer het bereik vanaf het regelnummer X naar En .







Sorteren is een van de cruciale functionaliteiten die nodig is bij het bewerken van documenten. Vim is niets minder dan welke geavanceerde editor dan ook als het gaat om het bieden van unieke functies zoals sorteren. Daarom zal ik in deze handleiding de ingebouwde Vim uitleggen soort commando, en hoe u het op verschillende manieren kunt gebruiken om regels te sorteren.



Opmerking: De instructies en opdrachten die in deze handleiding worden genoemd, worden uitgevoerd op Linux (Ubuntu 22.04). Vim is een platformonafhankelijke teksteditor en deze opdrachten werken ook zonder fouten op macOS en Windows.



Sorteer alle regels





Om alle regels in een document te sorteren, voert u de opdracht uit soort commando in de NORMAL-modus.

:soort



Standaard is de soort commando sorteert regels in lexicografische volgorde.

Houd er rekening mee dat als uw bestand lege regels bevat, het sorteercommando de lege regels bovenaan de daadwerkelijke tekstsortering plaatst.

Sorteer geselecteerde regels

Om de geselecteerde regels te sorteren, moeten we ze eerst selecteren in de selectiemodus. En om de selectiemodus in te schakelen, drukt u op in en selecteer lijnen met behulp van de H , J , k, En l toetsen of richtingsknoppen.

Vim heeft ook een lijnspecifieke selectiemodus genaamd VISUELE LIJN modus. druk op V (verschuiving+v) om de in te schakelen VISUELE LIJN modus om de lijnen te selecteren.

Nadat u de regels heeft geselecteerd, ziet u ‘ <, ' > in de opdrachtregel, die het selectiebereik vertegenwoordigt. De ' < gaf de eerste regel van visuele selectie aan, terwijl ‘ > geeft het laatste aan.

Typ nu gewoon de soort commando en druk op de Return-toets om de sortering op de geselecteerde regels toe te passen, zoals weergegeven in de volgende GIF.

Sorteer de afstandslijnen

Het lijnbereik kan worden overschreden vóór de soort opdracht om de regels te sorteren. De : nummer instellen commando kan worden gebruikt om het regelnummer in Vim te activeren, waardoor het gemakkelijker wordt om het regelnummer te identificeren.

Als u bijvoorbeeld regels van regelnummer 1 tot regelnummer 4 wilt sorteren, gebruikt u de :1,4 soort commando.

: 1 , 4 soort

Zoals u in de bovenstaande uitvoer kunt zien, worden de enige opgegeven regels gesorteerd.

Sorteer omgekeerd

Zoals eerder vermeld, is het standaardgedrag van de soort opdracht is om de regels in lexicografische volgorde te sorteren. Om de regels op een niet-lexicale manier te sorteren, voegt u het uitroepteken ( ! ) na de soort commando.

:soort !

Sorteer op landinstelling

Computers worden over de hele wereld gebruikt en hebben verschillende talen met verschillende karakters en regels. Als het gaat om het sorteren van de sortering op landinstelling, is dit van belang. Als u bijvoorbeeld in Japan woont en de regels op die landinstelling wilt sorteren, moet u dit opgeven. De soort commando biedt ook de mogelijkheid om de locale-optie in te stellen met de l vlag.

Om de huidige sorteerlandinstelling te controleren, gebruikt u de :taal commando.

:taal

Om te sorteren met de huidige landinstelling gebruikt u:

: geluk l

Opmerking: Deze optie werkt mogelijk niet goed op systemen die zijn gebaseerd op macOS.

Sorteer op nummer

Om regels te sorteren op basis van het eerste decimale getal in een regel, gebruikt u de N vlag met de soort commando. Het sorteren gebeurt standaard in oplopende volgorde.

:sorteer n

Om in aflopende volgorde te sorteren, gebruikt u de ! symbool na de opdracht.

:soort ! N

Het verschil tussen soort En sorteer n is dat het sort-commando de regels lexicaal sorteert, waarbij de cijfers erin worden genegeerd. Als je wilt sorteren op cijfers, voeg dan de N vlag met het sorteercommando.

De regels in het volgende bestand bevatten bijvoorbeeld ook letters en cijfers. Wanneer we het sorteren door de soort alleen opdracht, worden deze regels alfabetisch gesorteerd. Aan de andere kant is het toepassen van de sorteer n opdracht sorteer de regels op nummer zoals weergegeven in de volgende afbeelding.

Enkele andere opties voor numerieke sortering worden in de volgende tabel vermeld.

F Sortering van zwevende nummers
B Sortering van binaire getallen
O Octale nummersortering
H Sorteren van hexadecimale getallen

Sorteer op merken

In Vim worden markeringen gebruikt om specifieke posities in het bestand in te stellen, zodat u gemakkelijker door een bestand met honderden regels kunt navigeren. De markeringen kunnen worden gebruikt om een ​​sorteerbewerking uit te voeren met behulp van de soort commando.

Stel dat u twee markeringen heeft ingesteld A En B .

Dus om alle regels vanaf het teken te sorteren A markeren B , gebruik dan de volgende opdracht.

: 'A,' B soort

Het enkele aanhalingsteken ( ' ) wordt gebruikt om toegang te krijgen tot de markeringen.

Sorteren op reguliere expressie (RegEx)

De reguliere expressie (RegEx) is een van de gebruikelijke manieren om lijnen te sorteren door een patroon te definiëren met de soort commando.

Als u bijvoorbeeld de regels wilt sorteren op basis van een kolom met alfabetten en cijfers, gebruikt u de /[a-z]*[0-9]+/ patroon met de soort commando. De R vlag na de soort commando wordt gebruikt om het commando te instrueren om te sorteren op basis van het genoemde patroon.

: sorteer r / [ a-z ] * [ 0 - 9 ] + /

Zoals u in de bovenstaande afbeelding kunt zien, is de laatste kolom alfabetisch gesorteerd. Om de kolom numeriek te sorteren, voegt u gewoon de N vlag.

Opmerking: Ik heb de eerste regels overgeslagen door het bereik vanaf regel 2,5 te definiëren.

De R Met flag kunt u het bestand sorteren op de gegeven patronen. Zonder de R flag, sorteert het sorteercommando alle regels die niet overeenkomen met het patroon.

Verwijder de dubbele lijnen

De snelste manier om de dubbele regels in een bestand te verwijderen is met behulp van de soort commando met de in vlag, die het unieke vertegenwoordigt.

:variëteit u

Houd er rekening mee dat het gebruik van deze methode om dubbele regels te verwijderen ook de regels sorteert, wat in veel situaties ongewenst kan zijn. Gebruik alternatieve methoden, zoals regex, om dubbele regels in een bestand te verwijderen zonder dat u hoeft te sorteren.

Sorteer regels op basis van een kolom

Er zijn twee methoden om regels in Vim te sorteren op basis van kolom. De eerste methode gebruikt de externe sorteeropdracht van Linux, terwijl de tweede de ingebouwde sorteeropdracht gebruikt.

Het externe commando is eenvoudig te implementeren in vergelijking met het standaard sorteercommando. Merk op dat de externe opdrachten niet de standaardopdrachten van Vim zijn. Het betekent elke opdracht die door het besturingssysteem wordt ondersteund.

Laten we begrijpen hoe het werkt in Vim.

Om een ​​extern commando in Vim te gebruiken, ! symbool wordt vóór dat commando gebruikt. Stel dat we een door komma's gescheiden bestand (CSV) hebben en het bestand willen sorteren met betrekking tot de derde kolom. Het commando zal zijn

: %! soort -T ',' -k3

De % geeft de gehele buffer aan als een selectie. De -T flag wordt gebruikt om het veldscheidingsteken te definiëren, dat een komma, dubbele punt of zelfs een spatie kan zijn. De -k vlag is de sleutel die de positie in de lijn aangeeft, en k2 betekent het tweede veld na het opgegeven scheidingsteken.

In het voorbeeld heb ik het bereik genoemd in plaats van % om de eerste regel over te slaan.

: 2 , 5 ! soort -T ',' -k3

De externe soort De opdracht kan ook op veel andere manieren nuttig zijn, omdat het verschillende sorteeropties biedt, zoals willekeurig sorteren en samenvoegen. Voor meer informatie over de Linux-sorteeropdracht gebruikt u de mens hulp commando.

Aan de andere kant, om de ingebouwde Vim te gebruiken soort commando, zal een regulier expressiepatroon worden gebruikt met het sorteercommando.

:soort / \v^ ( . { - } , ) { 2 } /

In het bovenstaande commando:

  • \in vertegenwoordigt het verticale tabblad
  • ^ geeft het begin van de regel aan
  • (.{-},) is een groep die dat wil .{-} is een niet-hebzuchtige versie van .* En , is het scheidingsveld
  • {2} vertegenwoordigt de eerste twee kolommen die moeten worden overgeslagen

Het valt te zien dat de R flag wordt niet gebruikt bij het patroon, wat betekent dat het patroon elke overeenkomende kolom overslaat en de kolommen na het patroon sorteert. In dit geval wordt het bestand gesorteerd op basis van de derde kolom. Ook in het volgende voorbeeld heb ik, om de eerste regel over te slaan, het bereik 2,5 gebruikt.

Het fundamentele onderscheid tussen .* En .{-} is dat de .{-} zal het kortste match-first-algoritme verwerken, terwijl .* zal zoveel mogelijk overeenkomen. In een tekenreeks wxyz bijvoorbeeld de x.*y komt overeen met de hele string while x.{-}j komt alleen overeen met de xy.

Sorteerregels hoofdletterongevoelig

Als u regels sorteert die beginnen met hoofdletters en kleine letters, sorteert het sorteercommando de regels eerst in hoofdletters. Om de hoofdlettergevoeligheid te negeren, gebruik je de i vlag.

Zoals u in de volgende afbeelding kunt zien, zijn de ongesorteerde en gesorteerde regels met zowel de :soort En : sorteer ik opdrachten.

Conclusie

Sorteren in Vim kan eenvoudig worden gedaan met behulp van de ingebouwde Vim soort commando. Standaard worden regels alfabetisch gesorteerd, maar als u omgekeerd wilt sorteren, gebruikt u de ! teken na het commando. De sorteeropdracht sorteert doorgaans de gehele buffer; een bereik kan ook worden gedefinieerd met een kommascheidingsteken. De N flag wordt gebruikt voor numerieke sortering, terwijl de dubbele regels worden verwijderd in vlag wordt gebruikt. Bovendien, om het sorteerproces te verbeteren, de externe soort commando kan ook in Vim worden gebruikt.

Voor meer informatie over sorteren in Vim voert u de :help sorteren commando.