Οδηγός ταξινόμησης γραμμών στο Vim

Odegos Taxinomeses Grammon Sto Vim



Για να ταξινομήσετε τις γραμμές στο Vim, μπορείτε να χρησιμοποιήσετε το ενσωματωμένο είδος εντολή που ταξινομεί τις γραμμές κατά ένα καθορισμένο εύρος. Συνήθως, όλες οι γραμμές στο έγγραφο ταξινομούνται εάν δεν δίνεται εύρος.

Για παράδειγμα, εάν θέλετε να ταξινομήσετε ολόκληρο το έγγραφο, χρησιμοποιήστε το :είδος εντολή σε ΚΑΝΟΝΙΚΗ λειτουργία. Από την άλλη πλευρά, εάν θέλετε να ταξινομήσετε μόνο συγκεκριμένες γραμμές, χρησιμοποιήστε το :x, y ταξινόμηση εντολή, όπου Χ και και ορίστε το εύρος από τον αριθμό γραμμής Χ προς την και .







Η ταξινόμηση είναι μία από τις κρίσιμες λειτουργίες που απαιτούνται κατά την επεξεργασία εγγράφων. Το Vim δεν είναι λιγότερο από οποιοδήποτε προηγμένο πρόγραμμα επεξεργασίας όσον αφορά την παροχή μοναδικών χαρακτηριστικών όπως η ταξινόμηση. Επομένως, σε αυτόν τον οδηγό, θα εξηγήσω το ενσωματωμένο του Vim είδος εντολή και πώς να τη χρησιμοποιήσετε με διαφορετικούς τρόπους για την ταξινόμηση των γραμμών.



Σημείωση: Οι οδηγίες και οι εντολές που αναφέρονται σε αυτόν τον οδηγό εκτελούνται σε Linux (Ubuntu 22.04). Το Vim είναι ένα πρόγραμμα επεξεργασίας κειμένου μεταξύ πλατφορμών και αυτές οι εντολές θα λειτουργούν χωρίς κανένα σφάλμα και σε macOS και Windows.



Ταξινόμηση όλων των γραμμών





Για να ταξινομήσετε όλες τις γραμμές σε ένα έγγραφο, εκτελέστε το είδος εντολή στη λειτουργία NORMAL.

:είδος



Από προεπιλογή, το είδος εντολή θα ταξινομήσει τις γραμμές με λεξικογραφική σειρά.

Σημειώστε ότι εάν το αρχείο σας έχει κενές γραμμές, τότε η εντολή ταξινόμησης θα τοποθετήσει τις κενές γραμμές στην επάνω πραγματική ταξινόμηση κειμένου.

Ταξινόμηση επιλεγμένων γραμμών

Για να ταξινομήσουμε τις επιλεγμένες γραμμές, πρώτα, πρέπει να τις επιλέξουμε στη λειτουργία επιλογής. Και για να ενεργοποιήσετε τη λειτουργία επιλογής, πατήστε σε και επιλέξτε γραμμές χρησιμοποιώντας το η , ι , κ, και μεγάλο πλήκτρα ή κουμπιά κατεύθυνσης.

Το Vim έχει επίσης μια λειτουργία επιλογής συγκεκριμένης γραμμής που ονομάζεται ΟΠΤΙΚΗ ΓΡΑΜΜΗ τρόπος. Τύπος V (shift+v) για να ενεργοποιήσετε το ΟΠΤΙΚΗ ΓΡΑΜΜΗ λειτουργία για να επιλέξετε τις γραμμές.

Αφού επιλέξετε τις γραμμές, θα δείτε ' <, ' > στη γραμμή εντολών, η οποία αντιπροσωπεύει το εύρος επιλογής. Ο ' < υπέδειξε την πρώτη γραμμή οπτικής επιλογής, ενώ « > υποδηλώνει το τελευταίο.

Τώρα, απλώς πληκτρολογήστε το είδος εντολή και πατήστε το πλήκτρο επιστροφής για να εφαρμόσετε την ταξινόμηση στις επιλεγμένες γραμμές όπως φαίνεται στο παρακάτω GIF.

Ταξινόμηση των γραμμών εμβέλειας

Το εύρος γραμμής μπορεί να περάσει πριν από το είδος εντολή για ταξινόμηση των γραμμών. ο :set number Η εντολή μπορεί να χρησιμοποιηθεί για την ενεργοποίηση του αριθμού γραμμής στο Vim, καθιστώντας έτσι ευκολότερο τον εντοπισμό του αριθμού γραμμής.

Για παράδειγμα, για να ταξινομήσετε γραμμές από τον αριθμό γραμμής 1 στον αριθμό γραμμής 4, χρησιμοποιήστε το :1,4 ταξινόμηση εντολή.

: 1 , 4 είδος

Όπως φαίνεται στην παραπάνω έξοδο ότι οι μόνες καθορισμένες γραμμές είναι ταξινομημένες.

Ταξινόμηση αντίστροφα

Όπως αναφέρθηκε προηγουμένως, η προεπιλεγμένη συμπεριφορά του είδος εντολή είναι να ταξινομήσετε τις γραμμές με λεξικογραφική σειρά. Για να ταξινομήσετε τις γραμμές με μη λεξικό τρόπο, προσθέστε το θαυμαστικό ( ! ) μετά το είδος εντολή.

:είδος !

Ταξινόμηση κατά Τοπική ρύθμιση

Οι υπολογιστές λειτουργούν σε όλο τον κόσμο, με διαφορετικές γλώσσες με διαφορετικά σύνολα χαρακτήρων και κανόνων. Όταν πρόκειται για την ταξινόμηση της ταξινόμησης με βάση τις τοπικές ρυθμίσεις. Για παράδειγμα, εάν ζείτε στην Ιαπωνία και θέλετε να ταξινομήσετε τις γραμμές με βάση αυτήν την τοποθεσία, τότε πρέπει να την καθορίσετε. ο είδος Η εντολή παρέχει επίσης τη ρύθμιση της επιλογής τοπικής ρύθμισης με το μεγάλο σημαία.

Για να ελέγξετε την τρέχουσα τοπική ρύθμιση ταξινόμησης, χρησιμοποιήστε το :Γλώσσα εντολή.

:Γλώσσα

Για ταξινόμηση με την τρέχουσα τοπική ρύθμιση, χρησιμοποιήστε:

: τύχη l

Σημείωση: Αυτή η επιλογή ενδέχεται να μην λειτουργεί σωστά σε συστήματα που βασίζονται σε macOS.

Ταξινόμηση κατά αριθμό

Για να ταξινομήσετε γραμμές με βάση τον πρώτο δεκαδικό αριθμό μιας γραμμής, χρησιμοποιήστε το n σημαία με το είδος εντολή. Η ταξινόμηση θα προχωρήσει με αύξουσα σειρά από προεπιλογή.

:ταξινόμηση n

Για ταξινόμηση με φθίνουσα σειρά, χρησιμοποιήστε το ! σύμβολο μετά την εντολή.

:είδος ! n

Η διαφορά μεταξύ είδος και ταξινόμηση n είναι ότι η εντολή sort ταξινομεί τις γραμμές λεξιλογικά, αγνοώντας τους αριθμούς σε αυτές. Εάν θέλετε να κάνετε ταξινόμηση σε σχέση με τους αριθμούς, προσθέστε το n επισημάνετε με την εντολή ταξινόμησης.

Για παράδειγμα, οι γραμμές στο παρακάτω αρχείο έχουν επίσης γράμματα και αριθμούς. Όταν το ταξινομήσουμε εφαρμόζοντας το είδος εντολή μόνο, αυτές οι γραμμές θα ταξινομηθούν αλφαβητικά. Από την άλλη, εφαρμόζοντας το ταξινόμηση n εντολή ταξινομήστε τις γραμμές κατά αριθμό όπως φαίνεται στην παρακάτω εικόνα.

Μερικές άλλες επιλογές για αριθμητική ταξινόμηση αναφέρονται στον παρακάτω πίνακα.

φά Ταξινόμηση αριθμού πλωτήρα
σι Δυαδική ταξινόμηση αριθμών
Ο Οκταδική ταξινόμηση αριθμών
η Δεκαεξαδική ταξινόμηση αριθμών

Ταξινόμηση κατά σημάδια

Στο Vim, τα σημάδια χρησιμοποιούνται για τον ορισμό συγκεκριμένων θέσεων στο αρχείο για ευκολότερη πλοήγηση σε ένα αρχείο με εκατοντάδες γραμμές. Τα σημάδια μπορούν να χρησιμοποιηθούν για την εκτέλεση μιας λειτουργίας ταξινόμησης χρησιμοποιώντας το είδος εντολή.

Ας υποθέσουμε ότι έχετε ορίσει δύο σημεία ένα και σι .

Έτσι, για να ταξινομήσετε όλες τις γραμμές από το σημάδι ένα να υπογραμμίσω σι , χρησιμοποιήστε την ακόλουθη εντολή.

: 'ένα,' σι είδος

Το μοναδικό απόσπασμα ( ' ) χρησιμοποιείται για την πρόσβαση στα σημάδια.

Ταξινόμηση κατά κανονική έκφραση (RegEx)

Η τυπική έκφραση (RegEx) είναι ένας από τους συνηθισμένους τρόπους ταξινόμησης γραμμών ορίζοντας ένα μοτίβο με το είδος εντολή.

Για παράδειγμα, για να ταξινομήσετε τις γραμμές σε σχέση με μια στήλη που έχει αλφάβητα και ψηφία, χρησιμοποιήστε το /[a-z]*[0-9]+/ μοτίβο με το είδος εντολή. ο r σημαία μετά το είδος Η εντολή χρησιμοποιείται για να δώσει εντολή στην εντολή να ταξινομήσει με βάση το αναφερόμενο μοτίβο.

:ταξινόμηση r / [ a-z ] * [ 0 - 9 ] + /

Όπως μπορείτε να δείτε στην παραπάνω εικόνα, η τελευταία στήλη είναι ταξινομημένη αλφαβητικά. Για να ταξινομήσετε τη στήλη αριθμητικά, απλώς εισαγάγετε το n σημαία.

Σημείωση: Παρέλειψα τις πρώτες γραμμές ορίζοντας το εύρος από τη γραμμή 2,5.

ο r Το flag σάς επιτρέπει να ταξινομήσετε το αρχείο με βάση τα δεδομένα μοτίβα. Χωρίς το r σημαία, η εντολή sort θα ταξινομήσει όλες τις γραμμές που δεν ταιριάζουν με το μοτίβο.

Αφαιρέστε τις διπλότυπες γραμμές

Ο πιο γρήγορος τρόπος για να αφαιρέσετε τις διπλότυπες γραμμές σε ένα αρχείο είναι να χρησιμοποιήσετε το είδος εντολή με το σε σημαία, η οποία αντιπροσωπεύει το μοναδικό.

:variety u

Σημειώστε ότι η χρήση αυτής της μεθόδου για την κατάργηση διπλότυπων γραμμών θα ταξινομήσει επίσης τις γραμμές, οι οποίες μπορεί να είναι ανεπιθύμητες σε πολλές περιπτώσεις. Χρησιμοποιήστε εναλλακτικές μεθόδους, όπως το regex, για να αφαιρέσετε διπλές γραμμές σε ένα αρχείο χωρίς την ανάγκη ταξινόμησης.

Ταξινόμηση γραμμών με βάση μια στήλη

Υπάρχουν δύο μέθοδοι ταξινόμησης γραμμών στο Vim με βάση τη στήλη. Η πρώτη μέθοδος χρησιμοποιεί την εξωτερική εντολή ταξινόμησης Linux, ενώ η δεύτερη χρησιμοποιεί την ενσωματωμένη εντολή ταξινόμησης.

Η εξωτερική εντολή είναι εύκολο να εφαρμοστεί σε σύγκριση με την προεπιλεγμένη εντολή ταξινόμησης. Σημειώστε ότι οι εξωτερικές εντολές δεν είναι οι προεπιλεγμένες εντολές του Vim. Σημαίνει οποιαδήποτε εντολή υποστηρίζεται από το λειτουργικό σύστημα.

Ας καταλάβουμε πώς λειτουργεί στο Vim.

Για να χρησιμοποιήσετε οποιαδήποτε εξωτερική εντολή στο Vim, ! Το σύμβολο χρησιμοποιείται πριν από αυτήν την εντολή. Ας υποθέσουμε ότι έχουμε ένα αρχείο διαχωρισμένο με κόμματα (CSV) και θέλουμε να ταξινομήσουμε το αρχείο σε σχέση με την τρίτη στήλη. Η εντολή θα είναι

: %! είδος ',' -k3

ο % υποδεικνύει ολόκληρο το buffer ως επιλογή. ο Το flag χρησιμοποιείται για να ορίσει το διαχωριστικό πεδίου, το οποίο μπορεί να είναι κόμμα, άνω και κάτω τελεία ή ακόμα και κενό. ο flag είναι το κλειδί που υποδεικνύει τη θέση στη γραμμή και k2 σημαίνει το δεύτερο πεδίο μετά τον καθορισμένο οριοθέτη.

Στο παράδειγμα, έχω αναφέρει το εύρος αντί για % για να παραλείψετε την πρώτη γραμμή.

: 2 , 5 ! είδος ',' -k3

Το εξωτερικό είδος Η εντολή μπορεί να είναι χρήσιμη με πολλούς άλλους τρόπους, καθώς προσφέρει διάφορες επιλογές ταξινόμησης, όπως ανακάτεμα, τυχαία ταξινόμηση και συγχώνευση. Για να μάθετε περισσότερα σχετικά με την εντολή ταξινόμησης Linux, χρησιμοποιήστε το άνθρωπος βοήθεια εντολή.

Από την άλλη πλευρά, για να χρησιμοποιήσετε το ενσωματωμένο Vim είδος εντολή, ένα πρότυπο τυπικής έκφρασης θα χρησιμοποιηθεί με την εντολή ταξινόμησης.

:είδος / \v^ ( . { - } , ) { 2 } /

Στην παραπάνω εντολή:

  • \σε αντιπροσωπεύει την κάθετη καρτέλα
  • ^ δείχνει την αρχή της γραμμής
  • (.{-},) είναι μια ομάδα που θα στην οποία .{-} είναι μια μη άπληστη εκδοχή του .* και , είναι το πεδίο διαχωρισμού
  • {2} αντιπροσωπεύει τις 2 πρώτες στήλες προς παράβλεψη

Μπορεί να φανεί ότι το r Η σημαία δεν χρησιμοποιείται με το μοτίβο, πράγμα που σημαίνει ότι το μοτίβο θα παρακάμψει οποιαδήποτε στήλη που αντιστοιχεί και θα ταξινομήσει τις στήλες μετά το μοτίβο. Σε αυτήν την περίπτωση, το αρχείο θα ταξινομηθεί με βάση την τρίτη στήλη. Και πάλι στο παρακάτω παράδειγμα, για να παραλείψω την πρώτη γραμμή, χρησιμοποίησα το εύρος 2,5.

Η βασική διάκριση μεταξύ .* και .{-} είναι ότι το .{-} θα επεξεργαστεί τον συντομότερο αλγόριθμο πρώτης αντιστοίχισης, ενώ .* θα ταιριάζει όσο το δυνατόν περισσότερο. Για παράδειγμα, σε μια συμβολοσειρά wxyz το x.*y θα ταιριάζει με ολόκληρη τη συμβολοσειρά ενώ x.{-}y θα ταιριάζει μόνο με το xy.

Ταξινόμηση γραμμών χωρίς διάκριση πεζών-κεφαλαίων

Εάν ταξινομήσετε γραμμές που ξεκινούν με πάνω και κάτω γράμματα, τότε η εντολή ταξινόμησης θα ταξινομήσει πρώτα τις γραμμές με τα κεφαλαία γράμματα. Λοιπόν, για να αγνοήσετε την ευαισθησία πεζών-κεφαλαίων, χρησιμοποιήστε το Εγώ σημαία.

Όπως μπορείτε να δείτε στην παρακάτω εικόνα, οι μη ταξινομημένες και ταξινομημένες γραμμές και με τα δύο :είδος και :ταξινόμηση i εντολές.

συμπέρασμα

Η ταξινόμηση σε Vim μπορεί εύκολα να γίνει χρησιμοποιώντας το ενσωματωμένο Vim είδος εντολή. Από προεπιλογή, οι γραμμές ταξινομούνται αλφαβητικά, ωστόσο, εάν θέλετε να ταξινομήσετε αντίστροφα, χρησιμοποιήστε το ! υπογράψτε μετά την εντολή. Η εντολή sort ταξινομεί συνήθως ολόκληρο το buffer. ένα εύρος μπορεί επίσης να οριστεί με διαχωριστικό κόμμα. ο n Το flag χρησιμοποιείται για την αριθμητική ταξινόμηση, ενώ για την αφαίρεση των διπλότυπων γραμμών σε χρησιμοποιείται η σημαία. Επιπλέον, για την ενίσχυση της διαδικασίας διαλογής, η εξωτερική είδος Η εντολή μπορεί επίσης να χρησιμοποιηθεί στο Vim.

Για να μάθετε περισσότερα σχετικά με την ταξινόμηση στο Vim, εκτελέστε το :βοήθεια ταξινόμηση εντολή.