Ръководство за сортиране на линии във Vim

R Kovodstvo Za Sortirane Na Linii V V Vim



За да сортирате редове във Vim, можете да използвате вградения вид команда, която сортира редове по определен диапазон. Обикновено всички редове в документа се сортират, ако не е даден диапазон.

Например, ако искате да сортирате целия документ, използвайте :вид команда в НОРМАЛЕН режим. От друга страна, ако искате да сортирате само конкретни редове, използвайте :x,y сортиране команда, къде х и и дефинирайте диапазона от номера на реда х да се и .







Сортирането е една от ключовите функции, които се изискват при редактиране на документи. Vim е не по-малко от всеки усъвършенстван редактор, когато става въпрос за предоставяне на уникални функции като сортиране. Затова в това ръководство ще обясня вградения Vim вид и как да я използвате по различни начини за сортиране на редове.



Забележка: Инструкциите и командите, споменати в това ръководство, се изпълняват на Linux (Ubuntu 22.04). Vim е мултиплатформен текстов редактор и тези команди ще работят без грешка и на macOS и Windows.



Сортирайте всички редове





За да сортирате всички редове в документ, изпълнете вид команда в НОРМАЛЕН режим.

:вид



По подразбиране, вид командата ще сортира редовете в лексикографски ред.

Имайте предвид, че ако вашият файл има празни редове, тогава командата за сортиране ще постави празните редове в горната част на действителното сортиране на текст.

Сортиране на избраните редове

За да сортирате избраните редове, първо трябва да ги изберете в режим на избор. И за да активирате режима на избор, натиснете в и изберете линии с помощта на ч , й , к, и л клавиши или бутони за посока.

Vim също има режим за избор на специфичен ред, наречен ВИЗУАЛНА ЛИНИЯ режим. Натиснете V (shift+v) за да активирате ВИЗУАЛНА ЛИНИЯ режим за избор на линиите.

След като изберете редовете, ще видите „ <, ' > в командния ред, който представлява диапазона за избор. „ < посочи първия ред на визуална селекция, докато „ > показва последното.

Сега просто въведете вид и натиснете клавиша за връщане, за да приложите сортирането върху избраните редове, както е показано в следния GIF.

Сортирайте диапазонните линии

Диапазонът на реда може да бъде предаден преди вид команда за сортиране на редовете. The : задайте номер може да се използва за активиране на номера на реда във Vim, като по този начин улеснява идентифицирането на номера на реда.

Например, за да сортирате редове от ред номер 1 до ред номер 4, използвайте :1,4 сортиране команда.

: 1 , 4 вид

Както може да се види в горния изход, сортирани са само посочените редове.

Сортиране в обратен ред

Както споменахме по-рано, поведението по подразбиране на вид командата е да сортира редовете в лексикографски ред. За да сортирате редовете по нелексикален начин, добавете удивителния знак ( ! ) След вид команда.

:вид !

Сортиране по локал

Компютрите се управляват по целия свят, като имат различни езици с различни набори от символи и правила. Когато става въпрос за сортиране на сортирането по локал, има значение. Например, ако живеете в Япония и искате да сортирате редовете по този локал, тогава трябва да го посочите. The вид командата също така осигурява задаване на опцията за локал с л знаме.

За да проверите текущия локал на сортиране, използвайте :език команда.

:език

За сортиране с текущия локал използвайте:

:sort l

Забележка: Тази опция може да не работи правилно на системи, базирани на macOS.

Сортиране по номер

За да сортирате редове въз основа на първото десетично число в ред, използвайте н знаме с вид команда. По подразбиране сортирането ще продължи във възходящ ред.

: сортиране n

За да сортирате в низходящ ред, използвайте ! символ след командата.

:вид ! н

Разликата между вид и сортирам n е, че командата sort сортира редовете лексикално, игнорирайки числата в тях. Ако искате да сортирате по отношение на числата, добавете н флаг с командата sort.

Например, редовете в следния файл също имат букви и цифри. Когато го сортираме чрез прилагане на вид само команда, тези редове ще бъдат сортирани по азбучен ред. От друга страна, прилагането на сортирам n команда сортирайте редовете по номер, както е показано на следното изображение.

Някои други опции за числово сортиране са споменати в следващата таблица.

f Сортиране на числа с поплавък
b Сортиране на двоични числа
О Сортиране на осмични числа
ч Сортиране на шестнадесетични числа

Сортиране по марки

Във Vim знаците се използват за задаване на конкретни позиции във файла за по-лесна навигация във файл със стотици редове. Маркировките могат да се използват за извършване на операция за сортиране с помощта на вид команда.

Да предположим, че сте задали две марки а и b .

И така, за да сортирате всички редове от марк а да маркирам b , използвайте следната команда.

: 'а' b вид

Единичният цитат ( ' ) се използва за достъп до знаците.

Сортиране по регулярен израз (RegEx)

Регулярният израз (RegEx) е един от обичайните начини за сортиране на редове чрез дефиниране на модел с вид команда.

Например, за да сортирате редовете по отношение на колона, която има букви и цифри, използвайте /[a-z]*[0-9]+/ модел с вид команда. The r флаг след вид команда се използва, за да инструктира командата да сортира въз основа на споменатия модел.

:сортирай r / [ а-я ] * [ 0 - 9 ] + /

Както можете да видите на горното изображение, последната колона е сортирана по азбучен ред. За да сортирате колоната числово, просто вмъкнете н знаме.

Забележка: Пропуснах първите редове, като дефинирах диапазона от ред 2,5.

The r флаг ви позволява да сортирате файла по дадените модели. Без r флаг, командата за сортиране ще сортира всички редове, които не съответстват на шаблона.

Премахнете дублиращите се линии

Най-бързият начин за премахване на дублиращите се редове във файл е използването на вид команда с в флаг, който представлява уникалното.

:вариете ф

Обърнете внимание, че използването на този метод за премахване на дублирани линии също ще сортира линиите, което може да е нежелано в много ситуации. Използвайте алтернативни методи, като regex, за премахване на дублиращи се редове във файл без необходимост от сортиране.

Сортиране на редове въз основа на колона

Има два метода за сортиране на редове във Vim въз основа на колона. Първият метод използва външната команда за сортиране на Linux, докато вторият използва вградената команда за сортиране.

Външната команда е лесна за изпълнение в сравнение с командата за сортиране по подразбиране. Имайте предвид, че външните команди не са командите по подразбиране на Vim. Това означава всяка команда, която се поддържа от операционната система.

Нека разберем как работи във Vim.

За да използвате всяка външна команда във Vim, ! се използва преди тази команда. Да приемем, че имаме файл, разделен със запетая (CSV) и искаме да сортираме файла по отношение на третата колона. Командата ще бъде

: %! вид -T ',' -k3

The % показва целия буфер като селекция. The -T се използва за дефиниране на разделителя на полето, който може да бъде запетая, двоеточие или дори интервал. The флаг е ключът, който показва позицията в реда и k2 означава второто поле след посочения разделител.

В примера споменах диапазона вместо % за да пропуснете първия ред.

: 2 , 5 ! вид -T ',' -k3

Външният вид командата може да бъде полезна и по много други начини, защото предлага различни опции за сортиране, като разбъркване, произволно сортиране и сливане. За да научите повече за командата за сортиране на Linux, използвайте мъж помощ команда.

От друга страна, за да използвате вградения Vim вид команда, модел на регулярен израз ще бъде използван с командата sort.

:вид / \v^ ( . { - } , ) { 2 } /

В горната команда:

  • \in представлява вертикалния раздел
  • ^ показва началото на реда
  • (.{-},) е група, която ще в която .{-} е не-алчна версия на .* и , е полето за разделяне
  • {2} представлява първите 2 колони за пропускане

Вижда се, че r флагът не се използва с шаблона, което означава, че шаблонът ще пропусне всяка съответстваща колона и ще сортира колоните след шаблона. В този случай файлът ще бъде сортиран въз основа на третата колона. Отново в следващия пример, за да пропусна първия ред, използвах диапазона 2,5.

Основното разграничение между .* и .{-} това ли е .{-} ще обработи най-краткия алгоритъм за първо съвпадение, докато .* ще съвпадне колкото е възможно повече. Например, в низ wxyz the x.*y ще съответства на целия низ, докато x.{-}y ще съответства само на xy.

Сортиране на редове без значение за малки и големи букви

Ако сортирате редове, които започват с главни и малки букви, тогава командата за сортиране първо ще сортира редове с главни букви. Е, за да пренебрегнете чувствителността към малки и главни букви, използвайте i знаме.

Както можете да видите на следващото изображение, несортираните и сортираните линии с двете :вид и :sort i команди.

Заключение

Сортирането във Vim може лесно да се извърши с помощта на вградения Vim вид команда. По подразбиране редовете са сортирани по азбучен ред, но ако искате да сортирате в обратен ред, използвайте ! знак след командата. Командата за сортиране обикновено сортира целия буфер; диапазон може да бъде определен и с разделител със запетая. The н флаг се използва за числово сортиране, докато за премахване на дублиращите се редове в се използва флаг. Освен това, за да се подобри процеса на сортиране, външният вид може да се използва и във Vim.

За да научите повече за сортирането във Vim, стартирайте :помогнете сортиране команда.