Guia per ordenar línies a Vim

Guia Per Ordenar Linies A Vim



Per ordenar les línies a Vim, podeu utilitzar el sistema integrat ordenar ordre que ordena les línies per un rang definit. Normalment, totes les línies del document s'ordenen si no es dóna cap interval.

Per exemple, si voleu ordenar tot el document, utilitzeu : ordenar comanda en mode NORMAL. D'altra banda, si només voleu ordenar línies específiques, utilitzeu :x,y sort comanda, on x i i definir l'interval des del número de línia x a i .







L'ordenació és una de les funcionalitats crucials que es requereixen per editar documents. Vim no és menys que qualsevol editor avançat quan es tracta de proporcionar funcions úniques com l'ordenació. Per tant, en aquesta guia, explicaré la integració de Vim ordenar comanda i com utilitzar-lo de diferents maneres per ordenar línies.



Nota: Les instruccions i ordres esmentades en aquesta guia es realitzen a Linux (Ubuntu 22.04). Vim és un editor de text multiplataforma, i aquestes ordres també funcionaran sense cap error a macOS i Windows.



Ordena totes les línies





Per ordenar totes les línies d'un document, executeu el ordenar comanda en el mode NORMAL.

: ordenar



Per defecte, el ordenar L'ordre ordenarà les línies en ordre lexicogràfic.

Tingueu en compte que si el vostre fitxer té línies buides, l'ordre d'ordenació col·locarà les línies buides a l'ordenació de text real superior.

Ordena les línies seleccionades

Per ordenar les línies seleccionades, primer, les hem de seleccionar en el mode de selecció. I per activar el mode de selecció, premeu en , i seleccioneu línies amb el botó h , j , k, i l tecles o botons direccionals.

Vim també té un mode de selecció específic de línia anomenat LÍNIA VISUAL mode. Premeu V (majúscules+v) per habilitar el LÍNIA VISUAL mode per seleccionar les línies.

Després de seleccionar les línies, veureu ' <, > a la línia d'ordres, que representa l'interval de selecció. El ' < indicava la primera línia de selecció visual, mentre que ' > indica l'últim.

Ara, només cal que escriviu ordenar i premeu la tecla de retorn per aplicar l'ordenació a les línies seleccionades tal com es mostra al GIF següent.

Ordena les línies a distància

El rang de línia es pot passar abans de ordenar comanda per ordenar les línies. El : nombre establert L'ordre es pot utilitzar per activar el número de línia a Vim, per tant, és més fàcil identificar el número de línia.

Per exemple, per ordenar les línies de la línia número 1 a la línia número 4, utilitzeu :1,4 sort comandament.

: 1 , 4 ordenar

Com es pot veure a la sortida anterior, les úniques línies especificades estan ordenades.

Ordena al revés

Com s'ha esmentat anteriorment, el comportament predeterminat del ordenar L'ordre és ordenar les línies en ordre lexicogràfic. Per ordenar les línies d'una manera no lèxica, afegiu el signe d'exclamació ( ! ) després de la ordenar comandament.

: ordenar !

Ordena per entorn local

Els ordinadors funcionen a tot el món, amb diferents idiomes amb diferents conjunts de caràcters i regles. Quan es tracta d'ordenar la col·lació per entorn local, és important. Per exemple, si viviu al Japó i voleu ordenar les línies per aquesta configuració regional, heu d'especificar-ho. El ordenar L'ordre també proporciona establir l'opció de configuració regional amb l' l bandera.

Per comprovar la configuració regional de col·lació actual, utilitzeu el :llenguatge comandament.

:llenguatge

Per ordenar amb la configuració regional actual, utilitzeu:

:sort l

Nota: És possible que aquesta opció no funcioni correctament en sistemes basats en macOS.

Ordena per nombre

Per ordenar les línies en funció del primer nombre decimal d'una línia, utilitzeu n bandera amb el ordenar comandament. L'ordenació es procedirà per defecte en ordre ascendent.

:sort n

Per ordenar en ordre descendent, utilitzeu ! símbol després de l'ordre.

: ordenar ! n

La diferència entre ordenar i sort n és que l'ordre sort ordena les línies lèxicament, ignorant els números que hi ha. Si voleu ordenar segons els números, afegiu-hi n marca amb l'ordre sort.

Per exemple, les línies del fitxer següent també tenen lletres i números. Quan ho ordenem aplicant el ordenar només ordre, aquestes línies s'ordenaran alfabèticament. D'altra banda, aplicant el sort n L'ordre ordena les línies per nombre, tal com es mostra a la imatge següent.

Algunes altres opcions per a l'ordenació numèrica s'esmenten a la taula següent.

f Classificació de números flotants
b Ordenació de nombres binaris
O Ordenació de nombres octals
h Ordenació de nombres hexadecimals

Ordena per marques

A Vim, les marques s'utilitzen per establir posicions específiques al fitxer per facilitar la navegació per un fitxer amb centenars de línies. Les marques es poden utilitzar per dur a terme una operació d'ordenació utilitzant ordenar comandament.

Suposem que has posat dues marques a i b .

Per tant, per ordenar totes les línies de la marca a marcar b , utilitzeu l'ordre següent.

: 'a' b ordenar

La cita única ( ) s'utilitza per accedir a les marques.

Ordena per expressió regular (RegEx)

L'expressió regular (RegEx) és una de les maneres habituals d'ordenar línies definint un patró amb el ordenar comandament.

Per exemple, per ordenar les línies respecte a una columna que tingui alfabets i dígits, utilitzeu el /[a-z]*[0-9]+/ patró amb el ordenar comandament. El r bandera després de la ordenar L'ordre s'utilitza per indicar a l'ordre que ordeni en funció del patró esmentat.

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

Com podeu veure a la imatge de dalt, l'última columna està ordenada alfabèticament. Per ordenar la columna numèricament, només cal que inseriu el n bandera.

Nota: Em vaig saltar les primeres línies definint el rang de la línia 2,5.

El r flag us permet ordenar el fitxer segons els patrons donats. Sense el r flag, l'ordre sort ordenarà totes les línies que no coincideixin amb el patró.

Elimina les línies duplicades

La manera més ràpida d'eliminar les línies duplicades d'un fitxer és utilitzar el ordenar comanda amb el en bandera, que representa l'únic.

: varietat u

Tingueu en compte que l'ús d'aquest mètode per eliminar línies duplicades també ordenarà les línies, cosa que pot ser no desitjada en moltes situacions. Utilitzeu mètodes alternatius, com ara regex, per eliminar les línies duplicades d'un fitxer sense necessitat d'ordenar.

Ordena les línies en funció d'una columna

Hi ha dos mètodes per ordenar les línies a Vim en funció de la columna. El primer mètode utilitza l'ordre d'ordenació externa de Linux, mentre que el segon utilitza l'ordre d'ordenació integrada.

L'ordre extern és fàcil d'implementar en comparació amb l'ordre per defecte. Tingueu en compte que les ordres externes no són les ordres predeterminades de Vim. Significa qualsevol comanda que sigui compatible amb el sistema operatiu.

Entendrem com funciona a Vim.

Per utilitzar qualsevol comanda externa a Vim, ! s'utilitza el símbol abans d'aquesta ordre. Suposem que tenim un fitxer separat per comes (CSV) i volem ordenar el fitxer respecte a la tercera columna. L'ordre serà

: %! ordenar -t ',' -k3

El % indica tot el buffer com a selecció. El -t La bandera s'utilitza per definir el separador de camps, que pot ser una coma, dos punts o fins i tot un espai. El -k bandera és la clau que indica la posició a la línia, i k2 significa el segon camp després del delimitador especificat.

A l'exemple, he esmentat l'interval en lloc de % per saltar la primera línia.

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

L'exterior ordenar L'ordre també pot ser útil de moltes altres maneres perquè ofereix diverses opcions d'ordenació com ara la barreja, l'ordenació aleatòria i la fusió. Per obtenir més informació sobre l'ordre d'ordenació de Linux, utilitzeu ajuda home comandament.

D'altra banda, utilitzar el sistema integrat de Vim ordenar comanda, s'utilitzarà un patró d'expressió regular amb l'ordre sort.

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

A l'ordre anterior:

  • \in representa la pestanya vertical
  • ^ indica l'inici de la línia
  • (.{-},) és un grup que serà en el qual .{-} és una versió no cobdiciosa de .* i , és el camp de separació
  • {2} representa les 2 primeres columnes que cal saltar

Es pot veure que el r La bandera no s'utilitza amb el patró, el que significa que el patró saltarà qualsevol columna coincident i ordenarà les columnes després del patró. En aquest cas, el fitxer s'ordenarà en funció de la tercera columna. De nou en l'exemple següent, per saltar la primera línia, vaig utilitzar el rang 2,5.

La distinció bàsica entre .* i .{-} és que el .{-} processarà el primer algorisme de concordança més curta, mentre que .* coincidirà el màxim possible. Per exemple, en una cadena wxyz the x.*y coincidirà amb tota la cadena mentre x.{-}y coincidirà només amb el xy.

Ordena les línies No distingeix entre majúscules i minúscules

Si ordeneu línies que comencen amb lletres majúscules i minúscules, l'ordre ordenarà primer les línies en majúscules. Bé, per ignorar la distinció entre majúscules i minúscules, utilitzeu i bandera.

Com podeu veure a la imatge següent, les línies no ordenades i ordenades amb les dues : ordenar i : ordena i ordres.

Conclusió

L'ordenació a Vim es pot fer fàcilment mitjançant el Vim integrat ordenar comandament. De manera predeterminada, les línies s'ordenen alfabèticament, però, si voleu ordenar a l'inrevés, feu servir ! signe després de l'ordre. L'ordre sort normalment ordena tot el buffer; un interval també es pot definir amb un separador de comes. El n La bandera s'utilitza per a l'ordenació numèrica, mentre que per eliminar les línies duplicades en s'utilitza la bandera. A més, per millorar el procés de classificació, l'exterior ordenar L'ordre també es pot utilitzar a Vim.

Per obtenir més informació sobre l'ordenació a Vim, executeu el : ajuda a ordenar comandament.