Guide til sorteringslinjer i Vim

Guide Til Sorteringslinjer I Vim



For at sortere linjer i Vim kan du bruge den indbyggede sortere kommando, der sorterer linjer efter et defineret område. Typisk er alle linjerne i dokumentet sorteret, hvis der ikke er angivet et interval.

For eksempel, hvis du vil sortere hele dokumentet, skal du bruge :sortere kommando i NORMAL tilstand. På den anden side, hvis du kun ønsker at sortere specifikke linjer, skal du bruge :x,y slags kommando, hvor x og og definere intervallet fra linjenummer x til og .







Sortering er en af ​​de afgørende funktioner, der kræves ved redigering af dokumenter. Vim er ikke mindre end enhver avanceret editor, når det kommer til at levere unikke funktioner som sortering. Derfor vil jeg i denne guide forklare Vims indbyggede sortere kommando, og hvordan man bruger den på forskellige måder til at sortere linjer.



Bemærk: Instruktionerne og kommandoerne nævnt i denne vejledning udføres på Linux (Ubuntu 22.04). Vim er en teksteditor på tværs af platforme, og disse kommandoer fungerer også uden fejl på macOS og Windows.



Sorter alle linjer





For at sortere alle linjerne i et dokument skal du udføre sortere kommando i NORMAL tilstand.

:sortere



Som standard er sortere kommando vil sortere linjer i leksikografisk rækkefølge.

Bemærk, at hvis din fil har tomme linjer, vil sorteringskommandoen placere de tomme linjer øverst på den faktiske tekstsortering.

Sorter valgte linjer

For at sortere de valgte linjer skal vi først vælge dem i valgtilstanden. Og for at aktivere valgtilstanden skal du trykke på i , og vælg linjer ved hjælp af h , j , k, og l taster eller retningsknapper.

Vim har også en linjespecifik udvælgelsestilstand kaldet VISUEL LINJE mode. Trykke V (shift+v) for at aktivere VISUEL LINJE tilstand for at vælge linjerne.

Når du har valgt linjerne, vil du se ' <, ' > i kommandolinjen, som repræsenterer udvalgsområdet. Det ' < angav den første linie af visuel udvælgelse, mens ' > angiver den sidste.

Nu skal du bare skrive sortere kommando, og tryk på returtasten for at anvende sorteringen på de valgte linjer som vist i følgende GIF.

Sorter linierne med rækkevidde

Linjerækken kan passeres før sortere kommando til at sortere linjerne. Det :sæt nummer kommandoen kan bruges til at aktivere linjenummeret i Vim, hvilket gør det nemmere at identificere linjenummeret.

For at sortere linjer fra linje nummer 1 til linje nummer 4 skal du f.eks. bruge :1,4 sortering kommando.

: 1 , 4 sortere

Som det kan ses i ovenstående output, er de eneste angivne linjer sorteret.

Sorter i omvendt rækkefølge

Som tidligere nævnt er standardadfærden for sortere kommandoen er at sortere linjerne i leksikografisk rækkefølge. For at sortere linjerne på en ikke-leksikalsk måde skal du tilføje udråbstegn ( ! ) efter sortere kommando.

:sortere !

Sorter efter lokalitet

Computere drives over hele verden og har forskellige sprog med forskellige sæt af tegn og regler. Når det kommer til at sortere sammenstillingen efter lokalitet, er det vigtigt. For eksempel, hvis du bor i Japan og ønsker at sortere linjerne efter den pågældende lokalitet, så skal du angive det. Det sortere kommandoen giver også mulighed for at indstille lokalitetsindstillingen med l flag.

For at kontrollere den aktuelle sorteringslokalitet skal du bruge :Sprog kommando.

:Sprog

For at sortere med den aktuelle lokalitet skal du bruge:

: held l

Bemærk: Denne indstilling fungerer muligvis ikke korrekt på systemer baseret på macOS.

Sorter efter nummer

For at sortere linjer baseret på det første decimaltal i en linje, skal du bruge n flag med sortere kommando. Sorteringen vil som standard fortsætte i stigende rækkefølge.

:sort n

For at sortere i faldende rækkefølge skal du bruge ! symbol efter kommandoen.

:sortere ! n

Forskellen på sortere og sortere n er, at sorteringskommandoen sorterer linjerne leksikalsk og ignorerer tallene i dem. Hvis du vil sortere med hensyn til tallene, skal du tilføje n flag med sorteringskommandoen.

For eksempel har linjerne i den følgende fil også bogstaver og tal. Når vi sorterer det ved at anvende sortere kun kommando, vil disse linjer blive sorteret alfabetisk. På den anden side anvender man sortere n kommando sorter linjerne efter nummer som vist i det følgende billede.

Nogle andre muligheder for numerisk sortering er nævnt i følgende tabel.

f Float nummer sortering
b Binær nummersortering
O Oktal nummersortering
h Hexadecimal nummersortering

Sorter efter karakterer

I Vim bruges mærker til at indstille bestemte positioner i filen for lettere navigation af en fil med hundredvis af linjer. Mærkerne kan bruges til at udføre en sorteringsoperation ved hjælp af sortere kommando.

Antag, at du har sat to mærker -en og b .

Så for at sortere alle linjerne fra mark -en at markere b , brug følgende kommando.

: 'en,' b sortere

Det enkelte citat ( ' ) bruges til at få adgang til mærkerne.

Sorter efter regulært udtryk (RegEx)

Det regulære udtryk (RegEx) er en af ​​de almindelige måder at sortere linjer på ved at definere et mønster med sortere kommando.

For at sortere linjerne i forhold til en kolonne, der har alfabeter og cifre, skal du f.eks. bruge /[a-z]*[0-9]+/ mønster med sortere kommando. Det r flag efter sortere kommando bruges til at instruere kommandoen til at sortere ud fra det nævnte mønster.

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

Som du kan se på billedet ovenfor, er den sidste kolonne sorteret alfabetisk. For at sortere kolonnen numerisk skal du blot indsætte n flag.

Bemærk: Jeg sprang de første linjer over ved at definere området fra linje 2,5.

Det r flag giver dig mulighed for at sortere filen efter de givne mønstre. Uden r flag, sorterer kommandoen alle de linjer, der ikke matcher mønsteret.

Fjern de duplikerede linjer

Den hurtigste måde at fjerne de duplikerede linjer i en fil på er at bruge sortere kommando med i flag, som repræsenterer det unikke.

: sort u

Bemærk, at brug af denne metode til at fjerne duplikerede linjer vil også sortere linjerne, hvilket kan være uønsket i mange situationer. Brug alternative metoder, såsom regex, til at fjerne duplikerede linjer i en fil uden behov for sortering.

Sorter linjer baseret på en kolonne

Der er to metoder til at sortere linjer i Vim baseret på kolonne. Den første metode bruger den eksterne Linux sorteringskommando, mens den anden bruger den indbyggede sorteringskommando.

Den eksterne kommando er nem at implementere sammenlignet med standardsorteringskommandoen. Bemærk, at de eksterne kommandoer ikke er standardkommandoer for Vim. Det betyder enhver kommando, der understøttes af operativsystemet.

Lad os forstå, hvordan det fungerer i Vim.

For at bruge enhver ekstern kommando i Vim, ! symbol bruges før denne kommando. Antag, at vi har en kommasepareret fil (CSV) og ønsker at sortere filen i forhold til den tredje kolonne. Kommandoen bliver

: %! sortere -t ',' -k3

Det % angiver hele bufferen som en markering. Det -t flag bruges til at definere feltseparatoren, som kan være et komma, kolon eller endda mellemrum. Det -k flag er nøglen, der angiver positionen i linjen, og k2 betyder det andet felt efter den angivne afgrænsning.

I eksemplet har jeg nævnt rækkevidden i stedet for % for at springe den første linje over.

: 2 , 5 ! sortere -t ',' -k3

Det ydre sortere kommando kan også være nyttig på mange andre måder, fordi den tilbyder forskellige sorteringsmuligheder såsom bland, tilfældig sortering og fletning. For at lære mere om Linux sorteringskommandoen, brug mand hjælp kommando.

På den anden side at bruge Vims indbyggede sortere kommandoen, vil et regulært udtryksmønster blive brugt med sorteringskommandoen.

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

I ovenstående kommando:

  • \i repræsenterer den lodrette fane
  • ^ angiver begyndelsen af ​​linjen
  • (.{-},) er en gruppe, der vil i hvilke .{-} er en ikke-grådig version af .* og , er adskillelsesfeltet
  • {2} repræsenterer de første 2 kolonner, der skal springes over

Det kan ses, at r flag bruges ikke sammen med mønsteret, hvilket betyder, at mønsteret vil springe enhver matchende kolonne over og sortere kolonnerne efter mønsteret. I dette tilfælde vil filen blive sorteret ud fra den tredje kolonne. Igen i det følgende eksempel, for at springe den første linje over, brugte jeg området 2,5.

Den grundlæggende skelnen mellem .* og .{-} er det .{-} vil behandle den korteste match første algoritme, mens .* vil matche så meget som muligt. For eksempel, i en streng wxyz the x.*y vil matche hele strengen mens x.{-}y vil kun matche xy.

Sorter linjer Ufølsom mellem store og små bogstaver

Hvis du sorterer linjer, der starter med store og små bogstaver, vil sorteringskommandoen sortere linjer med store bogstaver først. Nå, for at ignorere følsomheden over for store og små bogstaver, brug jeg flag.

Som du kan se på det følgende billede, er de usorterede og sorterede linjer med både :sortere og :sort i kommandoer.

Konklusion

Sortering i Vim kan nemt udføres ved hjælp af den indbyggede Vim sortere kommando. Som standard er linjer sorteret alfabetisk, men hvis du vil sortere omvendt, skal du bruge ! tegn efter kommandoen. Sorteringskommandoen sorterer typisk hele bufferen; et område kan også defineres med en kommaseparator. Det n flag bruges til numerisk sortering, mens duplikatlinjerne fjernes i flag bruges. Desuden, for at forbedre sorteringsprocessen, den eksterne sortere kommando kan også bruges i Vim.

For at lære mere om sortering i Vim skal du køre :hjælp med at sortere kommando.