Ghid pentru sortarea liniilor în Vim

Ghid Pentru Sortarea Liniilor In Vim



Pentru a sorta linii în Vim, puteți utiliza sistemul încorporat fel comandă care sortează linii după un interval definit. De obicei, toate liniile din document sunt sortate dacă nu este specificat niciun interval.

De exemplu, dacă doriți să sortați întregul document, utilizați :fel comanda în modul NORMAL. Pe de altă parte, dacă doriți doar să sortați anumite linii, utilizați :x,y sort comanda, unde X și și definiți intervalul de la numărul rândului X la și .







Sortarea este una dintre funcționalitățile cruciale care este necesară în timpul editării documentelor. Vim nu este mai puțin decât orice editor avansat când vine vorba de a oferi caracteristici unice, cum ar fi sortarea. Prin urmare, în acest ghid, voi explica modul încorporat al Vim fel comandă și cum să o utilizați în moduri diferite pentru sortarea liniilor.



Notă: Instrucțiunile și comenzile menționate în acest ghid sunt efectuate pe Linux (Ubuntu 22.04). Vim este un editor de text multiplatformă, iar aceste comenzi vor funcționa fără nicio eroare și pe macOS și Windows.



Sortați toate liniile





Pentru a sorta toate liniile dintr-un document, executați fel comanda în modul NORMAL.

:fel



În mod implicit, fel comanda va sorta liniile în ordine lexicografică.

Rețineți că, dacă fișierul dvs. are linii goale, atunci comanda sortare va plasa liniile goale în prima sortare reală a textului.

Sortați liniile selectate

Pentru a sorta liniile selectate, mai întâi, trebuie să le selectăm în modul de selecție. Și pentru a activa modul de selecție, apăsați în , și selectați linii folosind h , j , k, și l taste sau butoane direcționale.

Vim are, de asemenea, un mod de selecție specific liniei numit LINIA VIZUALĂ modul. presa V (shift+v) pentru a activa LINIA VIZUALĂ pentru a selecta liniile.

După selectarea liniilor, veți vizualiza „ <, ' > în linia de comandă, care reprezintă intervalul de selecție. „ < a indicat prima linie de selecție vizuală, în timp ce „ > indică ultimul.

Acum, tastați doar fel comandă și apăsați tasta Revenire pentru a aplica sortarea liniilor selectate, așa cum se arată în următorul GIF.

Sortați liniile distanțate

Intervalul de linii poate fi trecut înainte de fel comanda pentru sortarea liniilor. The :set numar comanda poate fi folosită pentru a activa numărul de linie în Vim, facilitând astfel identificarea numărului de linie.

De exemplu, pentru a sorta linii de la rândul numărul 1 la rândul numărul 4, utilizați :1,4 sort comanda.

: 1 , 4 fel

După cum se poate vedea în rezultatul de mai sus, singurele linii specificate sunt sortate.

Sortați invers

După cum am menționat mai devreme, comportamentul implicit al fel comanda este de a sorta liniile în ordine lexicografică. Pentru a sorta liniile într-o manieră non-lexicală, adăugați semnul exclamării ( ! ) după fel comanda.

:fel !

Sortați după localitate

Calculatoarele sunt operate în toată lumea, având diferite limbi cu seturi diferite de caractere și reguli. Când vine vorba de sortarea colatării în funcție de localitate contează. De exemplu, dacă locuiți în Japonia și doriți să sortați liniile după locația respectivă, atunci trebuie să o specificați. The fel comanda oferă, de asemenea, setarea opțiunii locale cu l steag.

Pentru a verifica locația curentă de colare, utilizați :limba comanda.

:limba

Pentru a sorta cu locația curentă, utilizați:

:sort l

Notă: Este posibil ca această opțiune să nu funcționeze corect pe sisteme bazate pe macOS.

Sortați după număr

Pentru a sorta linii pe baza primului număr zecimal dintr-o linie, utilizați n steag cu fel comanda. Sortarea va continua în ordine crescătoare în mod implicit.

:sort n

Pentru a sorta în ordine descrescătoare, utilizați ! simbol după comandă.

:fel ! n

Diferența dintre fel și sortare n este că comanda sort sortează liniile lexical, ignorând numerele din ele. Dacă doriți să sortați în funcție de numere, adăugați n flag cu comanda sortare.

De exemplu, liniile din următorul fișier au și litere și cifre. Când o sortăm prin aplicarea fel numai comandă, aceste linii vor fi sortate alfabetic. Pe de altă parte, aplicarea sortare n comanda sortați liniile după număr, așa cum se arată în imaginea următoare.

Alte opțiuni pentru sortarea numerică sunt menționate în tabelul următor.

f Sortare număr flotant
b Sortarea numerelor binare
O Sortarea numerelor octale
h Sortarea numerelor hexazecimale

Sortați după mărci

În Vim, marcajele sunt folosite pentru a seta anumite poziții în fișier pentru o navigare mai ușoară într-un fișier cu sute de linii. Semnele pot fi folosite pentru a efectua o operație de sortare folosind fel comanda.

Să presupunem că ați stabilit două semne A și b .

Deci, pentru a sorta toate liniile de la mark A a marca b , utilizați următoarea comandă.

: 'A,' b fel

ghilimele unice ( ' ) este folosit pentru a accesa marcajele.

Sortați după expresie regulată (RegEx)

Expresia regulată (RegEx) este una dintre modalitățile comune de a sorta linii prin definirea unui model cu fel comanda.

De exemplu, pentru a sorta liniile în raport cu o coloană care are alfabete și cifre, utilizați /[a-z]*[0-9]+/ model cu fel comanda. The r steag după fel comanda este folosită pentru a instrui comanda să sorteze pe baza modelului menționat.

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

După cum puteți vedea în imaginea de mai sus, ultima coloană este sortată alfabetic. Pentru a sorta coloana numeric, trebuie doar să introduceți n steag.

Notă: Am sărit peste primele rânduri definind intervalul de la rândul 2,5.

The r flag vă permite să sortați fișierul după modelele date. Fara r flag, comanda sortare va sorta toate liniile care nu se potrivesc cu modelul.

Eliminați liniile duplicate

Cea mai rapidă modalitate de a elimina liniile duplicate dintr-un fișier este folosirea fel comanda cu în steag, care reprezintă unicul.

:varietate u

Rețineți că utilizarea acestei metode pentru a elimina liniile duplicate va sorta și liniile, care pot fi nedorite în multe situații. Utilizați metode alternative, cum ar fi regex, pentru a elimina liniile duplicate dintr-un fișier fără a fi nevoie de sortare.

Sortați linii pe baza unei coloane

Există două metode de sortare a liniilor în Vim în funcție de coloană. Prima metodă folosește comanda externă de sortare Linux, în timp ce a doua utilizează comanda de sortare încorporată.

Comanda externă este ușor de implementat în comparație cu comanda implicită de sortare. Rețineți că comenzile externe nu sunt comenzile implicite ale Vim. Înseamnă orice comandă care este suportată de sistemul de operare.

Să înțelegem cum funcționează în Vim.

Pentru a utiliza orice comandă externă în Vim, ! simbolul este folosit înaintea acelei comenzi. Să presupunem că avem un fișier separat prin virgulă (CSV) și dorim să sortăm fișierul în raport cu a treia coloană. Comanda va fi

: %! fel -t ',' -k3

The % indică întregul buffer ca selecție. The -t flag este folosit pentru a defini separatorul de câmp, care poate fi virgulă, două puncte sau chiar spațiu. The -k steag este cheia care indică poziția în linie și k2 înseamnă al doilea câmp după delimitatorul specificat.

În exemplu, am menționat intervalul în loc de % pentru a sări peste primul rând.

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

Externul fel comanda poate fi utilă și în multe alte moduri, deoarece oferă diverse opțiuni de sortare, cum ar fi amestecarea, sortarea aleatorie și îmbinarea. Pentru a afla mai multe despre comanda Linux sort, utilizați om ajutor comanda.

Pe de altă parte, să folosești sistemul încorporat al lui Vim fel comanda, un model de expresie regulată va fi folosit cu comanda sort.

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

În comanda de mai sus:

  • \în reprezintă fila verticală
  • ^ indică începutul liniei
  • (.{-},) este un grup care va în care .{-} este o versiune non-lacomă a .* și , este câmpul de separare
  • {2} reprezintă primele 2 coloane care trebuie sărite

Se poate observa că r flag nu este folosit cu modelul, ceea ce înseamnă că modelul va sări peste orice coloană potrivită și va sorta coloanele după model. În acest caz, fișierul va fi sortat în funcție de a treia coloană. Din nou, în exemplul următor, pentru a sări peste prima linie, am folosit intervalul 2,5.

Distincția de bază între .* și .{-} este că .{-} va procesa cel mai scurt algoritm de potrivire, în timp ce .* se va potrivi cât mai mult posibil. De exemplu, într-un șir wxyz the X y se va potrivi întregului șir în timp ce X y se va potrivi numai cu xy.

Sortează liniile fără diferențiere între majuscule și minuscule

Dacă sortați linii care încep cu litere mari și mici, atunci comanda sortare va sorta mai întâi liniile cu litere mari. Ei bine, pentru a ignora sensibilitatea cu majuscule și minuscule, utilizați i steag.

După cum puteți vedea în imaginea următoare, liniile nesortate și sortate cu atât :fel și : sort i comenzi.

Concluzie

Sortarea în Vim se poate face cu ușurință folosind Vim încorporat fel comanda. În mod implicit, liniile sunt sortate alfabetic, totuși, dacă doriți să sortați invers, utilizați ! semnează după comandă. Comanda sort sortează de obicei întregul buffer; un interval poate fi definit și cu un separator prin virgulă. The n flag este folosit pentru sortarea numerică, în timp ce pentru a elimina liniile duplicate în este folosit steag. În plus, pentru a îmbunătăți procesul de sortare, extern fel comanda poate fi folosită și în Vim.

Pentru a afla mai multe despre sortarea în Vim, rulați :ajutor la sortare comanda.