Průvodce řazením řádků ve Vimu

Pruvodce Razenim Radku Ve Vimu



Chcete-li třídit řádky ve Vimu, můžete použít vestavěný seřadit příkaz, který třídí řádky podle definovaného rozsahu. Pokud není zadán žádný rozsah, jsou obvykle seřazeny všechny řádky v dokumentu.

Pokud například chcete seřadit celý dokument, použijte příkaz :řadit příkaz v režimu NORMAL. Na druhou stranu, pokud chcete třídit pouze konkrétní řádky, použijte :x, ty řadíš příkaz, kde X a a definujte rozsah od čísla řádku X na a .







Třídění je jednou z klíčových funkcí, která je vyžadována při úpravě dokumentů. Vim není o nic méně než jakýkoli pokročilý editor, pokud jde o poskytování jedinečných funkcí, jako je třídění. Proto v této příručce vysvětlím vestavěné funkce Vim seřadit příkaz a jak jej používat různými způsoby k řazení řádků.



Poznámka: Pokyny a příkazy uvedené v této příručce se provádějí v systému Linux (Ubuntu 22.04). Vim je multiplatformní textový editor a tyto příkazy budou fungovat bez chyby i na macOS a Windows.



Seřadit všechny řádky





Chcete-li seřadit všechny řádky v dokumentu, spusťte příkaz seřadit příkaz v režimu NORMAL.

:řadit



Ve výchozím nastavení je seřadit příkaz seřadí řádky v lexikografickém pořadí.

Všimněte si, že pokud má váš soubor prázdné řádky, příkaz řazení umístí prázdné řádky do horního skutečného řazení textu.

Seřadit vybrané řádky

Abychom mohli vybrané řádky seřadit, musíme je nejprve vybrat v režimu výběru. A pro aktivaci režimu výběru stiskněte v a vyberte řádky pomocí h , j , k, a l klávesy nebo směrová tlačítka.

Vim má také nazvaný režim výběru specifický pro danou linku VIZUÁLNÍ LINKA režimu. lis V (Shift+v) povolit VIZUÁLNÍ LINKA režimu pro výběr čar.

Po výběru řádků se zobrazí „ <, ' > v příkazovém řádku, který představuje rozsah výběru. ' < označil první řádek vizuálního výběru, zatímco „ > označuje poslední.

Nyní stačí zadat seřadit a stisknutím klávesy return aplikujte řazení na vybrané řádky, jak je znázorněno na následujícím obrázku GIF.

Seřaďte uspořádané čáry

Rozsah řádku lze předat před seřadit příkaz k řazení řádků. The :nastavit číslo Příkaz lze použít k aktivaci čísla řádku ve Vimu, což usnadňuje identifikaci čísla řádku.

Chcete-li například seřadit řádky od řádku číslo 1 do řádku číslo 4, použijte :1,4 řazení příkaz.

: 1 , 4 seřadit

Jak je vidět na výše uvedeném výstupu, jsou seřazeny pouze zadané řádky.

Řadit obráceně

Jak již bylo zmíněno dříve, výchozí chování seřadit příkaz je seřadit řádky v lexikografickém pořadí. Chcete-li řádky seřadit nelexikálním způsobem, přidejte vykřičník ( ! ) po seřadit příkaz.

:řadit !

Seřadit podle národního prostředí

Počítače jsou provozovány po celém světě, mají různé jazyky s různými sadami znaků a pravidel. Pokud jde o třídění řazení podle národního prostředí, záleží. Pokud například žijete v Japonsku a chcete řádky seřadit podle tohoto národního prostředí, musíte to zadat. The seřadit příkaz také umožňuje nastavit volbu locale pomocí l vlajka.

Chcete-li zkontrolovat aktuální národní prostředí řazení, použijte :Jazyk příkaz.

:Jazyk

Chcete-li seřadit podle aktuálního národního prostředí, použijte:

:řadit l

Poznámka: Tato možnost nemusí správně fungovat na systémech založených na macOS.

Seřadit podle čísla

Chcete-li seřadit řádky na základě prvního desetinného čísla v řádku, použijte n vlajka s seřadit příkaz. Řazení bude standardně probíhat ve vzestupném pořadí.

:řadit n

Chcete-li seřadit v sestupném pořadí, použijte ! symbol za příkazem.

:řadit ! n

Rozdíl mezi seřadit a řadit n spočívá v tom, že příkaz sort třídí řádky lexikálně a ignoruje čísla v nich. Pokud chcete třídit podle čísel, přidejte znak n příznak pomocí příkazu sort.

Například řádky v následujícím souboru mají také písmena a čísla. Když to třídíme aplikací seřadit pouze příkaz, budou tyto řádky seřazeny podle abecedy. Na druhou stranu, použití řadit n příkaz seřadit řádky podle čísla, jak je znázorněno na následujícím obrázku.

Některé další možnosti číselného třídění jsou uvedeny v následující tabulce.

F Třídění plovoucích čísel
b Třídění binárních čísel
Ó Osmičkové řazení čísel
h Hexadecimální řazení čísel

Seřadit podle značek

Ve Vimu se značky používají k nastavení konkrétních pozic v souboru pro snadnější navigaci v souboru se stovkami řádků. Značky lze použít k provedení operace řazení pomocí seřadit příkaz.

Předpokládejme, že jste nastavili dvě značky A a b .

Takže seřadit všechny řádky od mark A oznámkovat b , použijte následující příkaz.

: 'A,' b seřadit

Jediná citace ( ' ) se používá pro přístup ke značkám.

Seřadit podle regulárního výrazu (RegEx)

Regulární výraz (RegEx) je jedním z běžných způsobů řazení řádků definováním vzoru pomocí znaku seřadit příkaz.

Chcete-li například seřadit řádky podle sloupce, který má abecedy a číslice, použijte /[a-z]*[0-9]+/ vzor s seřadit příkaz. The r vlajka po seřadit příkaz se používá k zadání příkazu k řazení na základě uvedeného vzoru.

:seřadit r / [ a-z ] * [ 0 - 9 ] + /

Jak můžete vidět na obrázku výše, poslední sloupec je řazen abecedně. Chcete-li sloupec seřadit číselně, stačí vložit n vlajka.

Poznámka: První řádky jsem přeskočil definováním rozsahu od řádku 2,5.

The r flag umožňuje seřadit soubor podle daných vzorů. Bez r flag, příkaz sort seřadí všechny řádky, které neodpovídají vzoru.

Odstraňte duplicitní řádky

Nejrychlejším způsobem odstranění duplicitních řádků v souboru je použití seřadit příkaz s v příznak, který představuje jedinečné.

:odrůda u

Všimněte si, že použití této metody k odstranění duplicitních řádků také seřadí řádky, což může být v mnoha situacích nežádoucí. Použijte alternativní metody, jako je regex, k odstranění duplicitních řádků v souboru bez nutnosti řazení.

Seřadit řádky na základě sloupce

Existují dva způsoby, jak třídit řádky ve Vimu na základě sloupce. První metoda používá externí příkaz řazení v systému Linux, zatímco druhá používá vestavěný příkaz řazení.

Externí příkaz se ve srovnání s výchozím příkazem řazení snadno implementuje. Všimněte si, že externí příkazy nejsou výchozí příkazy Vimu. Znamená jakýkoli příkaz, který je podporován operačním systémem.

Pojďme pochopit, jak to funguje ve Vimu.

Chcete-li použít jakýkoli externí příkaz ve Vimu, ! symbol se používá před tímto příkazem. Předpokládejme, že máme soubor oddělený čárkami (CSV) a chceme soubor seřadit podle třetího sloupce. Příkaz bude

: %! seřadit -t ',' -k3

The % označuje celý buffer jako výběr. The -t příznak se používá k definování oddělovače polí, kterým může být čárka, dvojtečka nebo dokonce mezera. The -k flag je klíč, který označuje pozici v řádku, a k2 znamená druhé pole za zadaným oddělovačem.

V příkladu jsem místo toho zmínil rozsah % přeskočit první řádek.

: 2 , 5 ! seřadit -t ',' -k3

Vnější seřadit Příkaz může být užitečný i v mnoha dalších ohledech, protože nabízí různé možnosti řazení, jako je míchání, náhodné řazení a slučování. Chcete-li se dozvědět více o příkazu sort v systému Linux, použijte příkaz muž pomoc příkaz.

Na druhou stranu použít vestavěný Vim seřadit s příkazem sort bude použit vzor regulárního výrazu.

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

Ve výše uvedeném příkazu:

  • \v představuje vertikální záložku
  • ^ označuje začátek řádku
  • (.{-},) je skupina, která bude ve které .{-} je nezištná verze .* a , je separační pole
  • {2} představuje první 2 sloupce, které se mají přeskočit

Je vidět, že r příznak se u vzoru nepoužívá, což znamená, že vzor přeskočí jakýkoli odpovídající sloupec a seřadí sloupce podle vzoru. V tomto případě bude soubor seřazen podle třetího sloupce. Opět v následujícím příkladu jsem pro přeskočení prvního řádku použil rozsah 2,5.

Základní rozdíl mezi .* a .{-} je to .{-} zpracuje nejdříve algoritmus s nejkratší shodou, zatímco .* bude co nejvíce odpovídat. Například v řetězci wxyz the x.*y bude odpovídat celému řetězci x.{-}y bude odpovídat pouze xy.

Třídit řádky nerozlišují malá a velká písmena

Pokud třídíte řádky, které začínají velkými a malými písmeny, příkaz sort seřadí řádky nejprve velkými písmeny. Chcete-li ignorovat rozlišování malých a velkých písmen, použijte i vlajka.

Jak můžete vidět na následujícím obrázku, neseřazené a seřazené řádky s oběma :řadit a :řadit i příkazy.

Závěr

Třídění ve Vimu lze snadno provést pomocí vestavěného Vimu seřadit příkaz. Ve výchozím nastavení jsou řádky seřazeny podle abecedy, pokud však chcete seřadit obráceně, použijte ! podepsat za příkazem. Příkaz sort obvykle třídí celou vyrovnávací paměť; rozsah lze také definovat pomocí oddělovače čárky. The n příznak se používá pro numerické třídění, zatímco k odstranění duplicitních řádků v používá se vlajka. Kromě toho, aby se zlepšil proces třídění, externí seřadit příkaz lze také použít ve Vimu.

Chcete-li se dozvědět více o řazení ve Vimu, spusťte :pomoc s řazením příkaz.