Aby sortować linie w Vimie, możesz użyć wbudowanej funkcji sortować polecenie sortujące linie według określonego zakresu. Zazwyczaj wszystkie wiersze w dokumencie są sortowane, jeśli nie podano zakresu.
Na przykład, jeśli chcesz posortować cały dokument, użyj opcji :sortować polecenie w trybie NORMALNYM. Z drugiej strony, jeśli chcesz posortować tylko określone linie, użyj metody :x, sortuj polecenie, gdzie X I I zdefiniuj zakres od numeru linii X Do I .
Sortowanie to jedna z kluczowych funkcjonalności wymaganych podczas edycji dokumentów. Vim nie jest gorszy od innych zaawansowanych edytorów, jeśli chodzi o zapewnianie unikalnych funkcji, takich jak sortowanie. Dlatego w tym przewodniku wyjaśnię wbudowaną funkcję Vima sortować polecenie i jak go używać na różne sposoby do sortowania linii.
Notatka: Instrukcje i polecenia wymienione w tym przewodniku są wykonywane w systemie Linux (Ubuntu 22.04). Vim to wieloplatformowy edytor tekstu i te polecenia będą działać bez żadnych błędów również na macOS i Windows.
Sortuj wszystkie linie
Aby posortować wszystkie wiersze w dokumencie, wykonaj polecenie sortować polecenie w trybie NORMALNYM.
:sortować
Domyślnie sortować polecenie posortuje linie w porządku leksykograficznym.
Pamiętaj, że jeśli plik zawiera puste linie, polecenie sort umieści puste linie na górze rzeczywistego sortowania tekstu.
Sortuj wybrane linie
Aby posortować wybrane linie, najpierw musimy je zaznaczyć w trybie selekcji. Aby włączyć tryb wyboru, naciśnij W i wybierz linie za pomocą H , J , k, I l klawisze lub przyciski kierunkowe.
Vim posiada również tryb zaznaczania specyficznego dla linii, zwany LINIA WIZUALNA tryb. Naciskać V (shift+v) aby umożliwić LINIA WIZUALNA tryb, aby wybrać linie.
Po wybraniu linii wyświetli się „ <, ' > w wierszu poleceń, który reprezentuje zakres wyboru. „ < wskazał pierwszą linię selekcji wizualnej, natomiast „ > wskazuje ostatni.
Teraz po prostu wpisz sortować polecenie i naciśnij klawisz Return, aby zastosować sortowanie do wybranych linii, jak pokazano na poniższym GIF-ie.
Sortuj linie dystansowe
Zakres linii można przekazać przed sortować polecenie sortowania linii. The :Ustaw numer polecenie może zostać użyte do aktywowania numeru linii w Vimie, ułatwiając w ten sposób identyfikację numeru linii.
Na przykład, aby posortować linie od linii nr 1 do linii nr 4, użyj metody :1,4 sortowanie Komenda.
: 1 , 4 sortować
Jak widać z powyższego wyniku, sortowane są tylko określone linie.
Sortuj odwrotnie
Jak wspomniano wcześniej, domyślne zachowanie sortować polecenie polega na posortowaniu wierszy w porządku leksykograficznym. Aby posortować linie w sposób nieleksykalny, dodaj wykrzyknik ( ! ) po sortować Komenda.
:sortować !
Sortuj według ustawień regionalnych
Komputery działają na całym świecie, posługując się różnymi językami, różnymi zestawami znaków i regułami. Jeśli chodzi o sortowanie zestawień według ustawień regionalnych. Na przykład, jeśli mieszkasz w Japonii i chcesz posortować wiersze według tego ustawienia regionalnego, musisz je określić. The sortować polecenie umożliwia również ustawienie opcji ustawień regionalnych za pomocą l flaga.
Aby sprawdzić bieżące ustawienia regionalne sortowania, użyj opcji :język Komenda.
:język
Aby posortować według bieżącego użycia ustawień regionalnych:
: szczęście l
Notatka: Ta opcja może nie działać poprawnie w systemach opartych na systemie macOS.
Sortuj według numeru
Aby posortować wiersze na podstawie pierwszej liczby dziesiętnej w wierszu, użyj funkcji N flaga z sortować Komenda. Sortowanie będzie domyślnie przebiegać w kolejności rosnącej.
:sortuj rz
Aby posortować w kolejności malejącej, użyj opcji ! symbol po poleceniu.
:sortować ! N
Różnica pomiędzy sortować I sortowanie rz polega na tym, że polecenie sort sortuje linie leksykalnie, ignorując zawarte w nich liczby. Jeśli chcesz sortować według liczb, dołącz N flagę za pomocą polecenia sort.
Na przykład linie w poniższym pliku również zawierają litery i cyfry. Kiedy sortujemy to, stosując metodę sortować tylko polecenie, linie te zostaną posortowane alfabetycznie. Z drugiej strony, stosując sortowanie rz polecenie posortuj linie według numerów, jak pokazano na poniższym obrazku.
Niektóre inne opcje sortowania numerycznego są wymienione w poniższej tabeli.
F | Sortowanie liczb zmiennoprzecinkowych |
B | Sortowanie liczb binarnych |
O | Sortowanie liczb ósemkowych |
H | Sortowanie liczb szesnastkowych |
Sortuj według znaków
W Vimie znaczniki służą do ustawiania określonych pozycji w pliku w celu łatwiejszej nawigacji po pliku zawierającym setki linii. Znaki mogą być używane do wykonywania operacji sortowania za pomocą sortować Komenda.
Załóżmy, że ustawiłeś dwa znaczniki A I B .
Aby posortować wszystkie linie od mark A oznaczać B , użyj następującego polecenia.
: 'A,' B sortować
Pojedynczy cytat ( ' ) służy do uzyskiwania dostępu do znaków.
Sortuj według wyrażenia regularnego (RegEx)
Wyrażenie regularne (RegEx) to jeden z powszechnych sposobów sortowania linii poprzez zdefiniowanie wzorca za pomocą sortować Komenda.
Na przykład, aby posortować linie według kolumny zawierającej litery i cyfry, użyj metody /[a-z]*[0-9]+/ wzór z sortować Komenda. The R flaga po sortować polecenie służy do instruowania polecenia, aby sortowało na podstawie wspomnianego wzorca.
:sortuj r / [ a-z ] * [ 0 - 9 ] + /
Jak widać na powyższym obrazku, ostatnia kolumna jest posortowana alfabetycznie. Aby posortować kolumnę numerycznie, wystarczy wstawić N flaga.
Notatka: Pierwsze linie pominąłem, definiując zakres od linii 2,5.
The R flaga pozwala posortować plik według podanych wzorców. Bez R flag, polecenie sort posortuje wszystkie linie, które nie pasują do wzorca.
Usuń zduplikowane linie
Najszybszym sposobem usunięcia zduplikowanych linii z pliku jest użycie metody sortować polecenie za pomocą W flaga, która reprezentuje wyjątkowość.
:różnorodność ty
Należy pamiętać, że użycie tej metody do usunięcia zduplikowanych linii spowoduje również ich posortowanie, co w wielu sytuacjach może być niepożądane. Użyj alternatywnych metod, takich jak regex, aby usunąć zduplikowane linie z pliku bez konieczności sortowania.
Sortuj linie na podstawie kolumny
Istnieją dwie metody sortowania linii w Vimie na podstawie kolumny. Pierwsza metoda wykorzystuje zewnętrzne polecenie sortowania systemu Linux, podczas gdy druga wykorzystuje wbudowane polecenie sortowania.
Polecenie zewnętrzne jest łatwe do wdrożenia w porównaniu z domyślnym poleceniem sortowania. Zauważ, że polecenia zewnętrzne nie są domyślnymi poleceniami Vima. Oznacza dowolne polecenie obsługiwane przez system operacyjny.
Rozumiemy, jak to działa w Vimie.
Aby użyć dowolnego polecenia zewnętrznego w Vimie, ! symbol jest używany przed tym poleceniem. Załóżmy, że mamy plik rozdzielany przecinkami (CSV) i chcemy posortować plik względem trzeciej kolumny. Polecenie będzie
: %! sortować -T ',' -k3
The % wskazuje cały bufor jako wybór. The -T flaga służy do zdefiniowania separatora pól, którym może być przecinek, dwukropek lub nawet spacja. The -k flaga to klucz wskazujący pozycję w linii, oraz k2 oznacza drugie pole po określonym ograniczniku.
W przykładzie zamiast tego wspomniałem o zasięgu % aby pominąć pierwszą linię.
: 2 , 5 ! sortować -T ',' -k3
Zewnętrzne sortować polecenie może być przydatne również na wiele innych sposobów, ponieważ oferuje różne opcje sortowania, takie jak tasowanie, sortowanie losowe i łączenie. Aby dowiedzieć się więcej o poleceniu sortowania w systemie Linux, użyj człowieku, pomóż Komenda.
Z drugiej strony, aby użyć wbudowanego Vima sortować poleceniem, w poleceniu sort zostanie zastosowany wzorzec wyrażenia regularnego.
:sortować / \v^ ( . { - } , ) { 2 } /
W powyższym poleceniu:
- \W reprezentuje zakładkę pionową
- ^ wskazuje początek linii
- (.{-},) to grupa, w której będzie .{-} jest niechciwą wersją .* I , jest polem separacji
- {2} reprezentuje pierwsze 2 kolumny do pominięcia
Widać, że R flaga nie jest używana ze wzorcem, co oznacza, że wzorzec pominie każdą dopasowaną kolumnę i posortuje kolumny według wzorca. W takim przypadku plik zostanie posortowany według trzeciej kolumny. Ponownie w poniższym przykładzie, aby pominąć pierwszą linię, użyłem zakresu 2,5.
Podstawowe rozróżnienie pomiędzy .* I .{-} jest to, że .{-} przetworzy algorytm pierwszego dopasowania, podczas gdy .* będzie pasować jak najbardziej. Na przykład w ciągu wxyz x.*y dopasuje cały ciąg while x.{-}y będzie pasować tylko do xy.
Sortuj linie bez uwzględniania wielkości liter
Jeśli sortujesz linie rozpoczynające się od dużych i małych liter, polecenie sort najpierw posortuje linie rozpoczynające się od wielkich liter. Cóż, aby zignorować wielkość liter, użyj metody I flaga.
Jak widać na poniższym obrazku, nieposortowane i nieposortowane linie z obydwoma :sortować I :sortuj ja polecenia.
Wniosek
Sortowanie w Vimie można łatwo wykonać za pomocą wbudowanego Vima sortować Komenda. Domyślnie linie są sortowane alfabetycznie, jednak jeśli chcesz posortować odwrotnie, użyj klawisza ! podpisz po poleceniu. Polecenie sort zazwyczaj sortuje cały bufor; zakres można również zdefiniować za pomocą separatora przecinka. The N flaga służy do sortowania numerycznego, natomiast do usuwania zduplikowanych linii W używana jest flaga. Ponadto, aby usprawnić proces sortowania, zewnętrzne sortować polecenie może być również użyte w Vimie.
Aby dowiedzieć się więcej o sortowaniu w Vimie, uruchom plik :pomoc w sortowaniu Komenda.