Guide till sorteringslinjer i Vim

Guide Till Sorteringslinjer I Vim



För att sortera linjer i Vim kan du använda den inbyggda sortera kommando som sorterar linjer efter ett definierat intervall. Vanligtvis sorteras alla rader i dokumentet om inget intervall anges.

Om du till exempel vill sortera hela dokumentet, använd :sortera kommando i NORMAL-läge. Å andra sidan, om du bara vill sortera specifika rader, använd :x,y typ kommando, var x och och definiera intervallet från radnummer x till och .







Sortering är en av de avgörande funktionerna som krävs vid redigering av dokument. Vim är inte mindre än alla avancerade redigerare när det gäller att tillhandahålla unika funktioner som sortering. Därför kommer jag i den här guiden att förklara Vims inbyggda sortera kommando och hur man använder det på olika sätt för att sortera linjer.



Notera: Instruktionerna och kommandona som nämns i den här guiden utförs på Linux (Ubuntu 22.04). Vim är en plattformsoberoende textredigerare, och dessa kommandon kommer att fungera utan några fel på macOS och Windows också.



Sortera alla linjer





För att sortera alla rader i ett dokument, kör du sortera kommandot i NORMAL-läget.

:sortera



Som standard är sortera kommandot kommer att sortera rader i lexikografisk ordning.

Observera att om din fil har tomma rader, kommer sorteringskommandot att placera de tomma raderna överst i den faktiska textsortering.

Sortera valda rader

För att sortera de markerade linjerna måste vi först välja dem i urvalsläget. Och för att aktivera valläget, tryck på i och välj linjer med hjälp av h , j , k, och l knappar eller riktningsknappar.

Vim har också ett linjespecifikt valläge som kallas VISUELL LINE läge. Tryck V (skift+v) för att aktivera VISUELL LINE läge för att välja linjer.

När du har valt raderna kommer du att se ' <, ' > på kommandoraden, som representerar urvalsintervallet. den ' < angav den första raden av visuellt urval, medan ' > indikerar den sista.

Nu är det bara att skriva sortera kommandot och tryck på returtangenten för att tillämpa sorteringen på de markerade linjerna som visas i följande GIF.

Sortera avståndslinjerna

Linjeintervallet kan passeras före sortera kommando för att sortera raderna. De :ställ nummer kommandot kan användas för att aktivera radnumret i Vim, vilket gör det lättare att identifiera radnumret.

Till exempel, för att sortera rader från rad nummer 1 till rad nummer 4, använd :1,4 sortering kommando.

: 1 , 4 sortera

Som framgår av ovanstående utdata är de enda angivna raderna sorterade.

Sortera omvänt

Som nämnts tidigare, standardbeteendet för sortera kommandot är att sortera raderna i lexikografisk ordning. För att sortera raderna på ett icke-lexikalt sätt, lägg till utropstecken ( ! ) efter sortera kommando.

:sortera !

Sortera efter språk

Datorer drivs över hela världen och har olika språk med olika uppsättningar av tecken och regler. När det gäller att sortera sorteringen efter plats är det viktigt. Om du till exempel bor i Japan och vill sortera linjerna efter det språket måste du ange det. De sortera kommandot ger också för att ställa in lokalalternativet med l flagga.

För att kontrollera den aktuella sorteringslokalen, använd :språk kommando.

:språk

För att sortera med den aktuella lokalen använd:

: tur l

Notera: Det här alternativet kanske inte fungerar korrekt på system baserade på macOS.

Sortera efter nummer

För att sortera rader baserat på det första decimaltalet på en rad, använd n flagga med sortera kommando. Sorteringen fortsätter som standard i stigande ordning.

:sort n

För att sortera i fallande ordning, använd ! symbol efter kommandot.

:sortera ! n

Skillnaden mellan sortera och sortera n är att sorteringskommandot sorterar raderna lexiskt och ignorerar siffrorna i dem. Om du vill sortera med hänsyn till siffrorna, lägg sedan till n flagga med sorteringskommandot.

Till exempel har raderna i följande fil även bokstäver och siffror. När vi sorterar det genom att tillämpa sortera endast kommando, dessa rader kommer att sorteras alfabetiskt. Å andra sidan, att tillämpa sortera n kommandot sortera raderna efter nummer som visas i följande bild.

Några andra alternativ för numerisk sortering nämns i följande tabell.

f Flytnummersortering
b Binär nummersortering
O Oktal nummersortering
h Hexadecimal nummersortering

Sortera efter poäng

I Vim används märken för att ställa in specifika positioner i filen för enklare navigering av en fil med hundratals rader. Märkena kan användas för att utföra en sorteringsoperation med hjälp av sortera kommando.

Anta att du har satt två märken a och b .

Så att sortera alla rader från mark a att markera b , använd följande kommando.

: 'a,' b sortera

Det enda citatet ( ' ) används för att komma åt märkena.

Sortera efter reguljärt uttryck (RegEx)

Det reguljära uttrycket (RegEx) är ett av de vanligaste sätten att sortera linjer genom att definiera ett mönster med sortera kommando.

Till exempel, för att sortera raderna med avseende på en kolumn som har alfabet och siffror, använd /[a-z]*[0-9]+/ mönster med sortera kommando. De r flagga efter sortera kommando används för att instruera kommandot att sortera baserat på det nämnda mönstret.

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

Som du kan se i bilden ovan är den sista kolumnen sorterad alfabetiskt. För att sortera kolumnen numeriskt, infoga bara n flagga.

Notera: Jag hoppade över de första raderna genom att definiera intervallet från rad 2,5.

De r flaggan låter dig sortera filen efter de givna mönstren. Utan r flagga kommer sorteringskommandot att sortera alla rader som inte matchar mönstret.

Ta bort dubblettlinjerna

Det snabbaste sättet att ta bort dubblettraderna i en fil är att använda sortera kommandot med i flagga, som representerar det unika.

:variation u

Observera att om du använder den här metoden för att ta bort dubbletter av rader kommer också raderna att sorteras, vilket kan vara oönskat i många situationer. Använd alternativa metoder, till exempel regex, för att ta bort dubbletter i en fil utan att behöva sortera.

Sortera linjer baserat på en kolumn

Det finns två metoder för att sortera linjer i Vim baserat på kolumn. Den första metoden använder det externa Linux-sorteringskommandot, medan den andra använder det inbyggda sorteringskommandot.

Det externa kommandot är enkelt att implementera jämfört med standardkommandot sortering. Observera att de externa kommandona inte är standardkommandona för Vim. Det betyder alla kommandon som stöds av operativsystemet.

Låt oss förstå hur det fungerar i Vim.

För att använda valfritt externt kommando i Vim, ! symbolen används före det kommandot. Antag att vi har en kommaseparerad fil (CSV) och vill sortera filen med avseende på den tredje kolumnen. Kommandot blir

: %! sortera -t ',' -k3

De % indikerar hela bufferten som ett urval. De -t flaggan används för att definiera fältavgränsaren, som kan vara ett kommatecken, kolon eller till och med mellanslag. De -k flagga är nyckeln som indikerar positionen i raden, och k2 betyder det andra fältet efter den angivna avgränsaren.

I exemplet har jag nämnt sortimentet istället för % för att hoppa över den första raden.

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

Det yttre sortera kommandot kan också vara användbart på många andra sätt eftersom det erbjuder olika sorteringsalternativ som blandning, slumpvis sortering och sammanslagning. För att lära dig mer om sorteringskommandot Linux, använd man hjälp kommando.

Å andra sidan, för att använda Vims inbyggda sortera kommandot kommer ett reguljärt uttrycksmönster att användas med sorteringskommandot.

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

I kommandot ovan:

  • \i representerar den vertikala fliken
  • ^ indikerar början av raden
  • (.{-},) är en grupp som kommer i vilken .{-} är en icke girig version av .* och , är separationsfältet
  • {2} representerar de två första kolumnerna att hoppa över

Det kan ses att r flaggan används inte med mönstret, vilket innebär att mönstret hoppar över alla matchade kolumner och sorterar kolumnerna efter mönstret. I det här fallet kommer filen att sorteras baserat på den tredje kolumnen. Återigen i följande exempel, för att hoppa över den första raden, använde jag intervallet 2,5.

Den grundläggande skillnaden mellan .* och .{-} är det .{-} kommer att bearbeta den kortaste matchningen första algoritmen, medan .* kommer att matcha så mycket som möjligt. Till exempel, i en sträng wxyz the x.*y kommer att matcha hela strängen medan x.{-}y matchar endast xy.

Sortera linjer Skiftlägesokänslig

Om du sorterar rader som börjar med stora och små bokstäver, kommer sorteringskommandot att sortera rader med versaler först. Tja, för att ignorera skiftlägeskänslighet, använd i flagga.

Som du kan se i följande bild är de osorterade och sorterade linjerna med både :sortera och :sort i kommandon.

Slutsats

Sortering i Vim kan enkelt göras med den inbyggda Vim sortera kommando. Som standard sorteras linjer i alfabetisk ordning, men om du vill sortera omvänt använder du ! tecken efter kommandot. Sorteringskommandot sorterar vanligtvis hela bufferten; ett område kan också definieras med en kommaavgränsare. De n flaggan används för numerisk sortering, medan för att ta bort dubblettlinjerna i flaggan används. Dessutom, för att förbättra sorteringsprocessen, den externa sortera kommandot kan också användas i Vim.

För att lära dig mer om sortering i Vim, kör :hjälp sortera kommando.