Hướng dẫn sắp xếp dòng trong Vim

Huong Dan Sap Xep Dong Trong Vim



Để sắp xếp các dòng trong Vim, bạn có thể sử dụng tính năng tích hợp sẵn loại lệnh sắp xếp các dòng theo một phạm vi xác định. Thông thường, tất cả các dòng trong tài liệu sẽ được sắp xếp nếu không có phạm vi nào được đưa ra.

Ví dụ: nếu bạn muốn sắp xếp toàn bộ tài liệu, hãy sử dụng :loại lệnh ở chế độ BÌNH THƯỜNG. Mặt khác, nếu bạn chỉ muốn sắp xếp các dòng cụ thể, hãy sử dụng :x,y sắp xếp lệnh ở đâu x xác định phạm vi từ số dòng x ĐẾN .







Sắp xếp là một trong những chức năng quan trọng cần có khi chỉnh sửa tài liệu. Vim không kém bất kỳ trình soạn thảo nâng cao nào khi cung cấp các tính năng độc đáo như sắp xếp. Do đó, trong hướng dẫn này, tôi sẽ giải thích tính năng tích hợp sẵn của Vim loại lệnh và cách sử dụng nó theo những cách khác nhau để sắp xếp các dòng.



Ghi chú: Các hướng dẫn và lệnh được đề cập trong hướng dẫn này được thực hiện trên Linux (Ubuntu 22.04). Vim là trình soạn thảo văn bản đa nền tảng và các lệnh này cũng sẽ hoạt động mà không gặp bất kỳ lỗi nào trên macOS và Windows.



Sắp xếp tất cả các dòng





Để sắp xếp tất cả các dòng trong tài liệu, hãy thực hiện lệnh loại lệnh ở chế độ BÌNH THƯỜNG.

:loại



Theo mặc định, loại lệnh sẽ sắp xếp các dòng theo thứ tự từ điển.

Lưu ý rằng nếu tệp của bạn có dòng trống thì lệnh sắp xếp sẽ đặt các dòng trống ở vị trí sắp xếp văn bản thực tế trên cùng.

Sắp xếp các dòng đã chọn

Để sắp xếp các dòng đã chọn, trước tiên chúng ta phải chọn chúng ở chế độ chọn. Và để kích hoạt chế độ lựa chọn, nhấn TRONG và chọn các dòng bằng cách sử dụng h , j , k, tôi phím hoặc nút định hướng.

Vim cũng có chế độ chọn theo dòng cụ thể được gọi là DÒNG TẦM NHÌN cách thức. Nhấn V (shift+v) để kích hoạt DÒNG TẦM NHÌN chế độ để chọn các dòng.

Sau khi chọn các dòng, bạn sẽ thấy ‘ <, ' > trong dòng lệnh, đại diện cho phạm vi lựa chọn. Các ' < chỉ ra dòng lựa chọn trực quan đầu tiên, trong khi ‘ > chỉ ra điều cuối cùng.

Bây giờ, chỉ cần gõ loại lệnh và nhấn phím quay lại để áp dụng sắp xếp trên các dòng đã chọn như minh họa trong ảnh GIF sau.

Sắp xếp các dòng có phạm vi

Phạm vi dòng có thể được chuyển trước loại lệnh sắp xếp các dòng. Các :đánh số lệnh có thể được sử dụng để kích hoạt số dòng trong Vim, do đó giúp xác định số dòng dễ dàng hơn.

Ví dụ: để sắp xếp các dòng từ dòng số 1 đến dòng số 4, hãy sử dụng :1,4 sắp xếp yêu cầu.

: 1 , 4 loại

Như có thể thấy ở kết quả đầu ra ở trên, các dòng được chỉ định duy nhất đã được sắp xếp.

Sắp xếp ngược lại

Như đã đề cập trước đó, hành vi mặc định của loại lệnh là sắp xếp các dòng theo thứ tự từ điển. Để sắp xếp các dòng theo cách không từ vựng, hãy thêm dấu chấm than ( ! ) sau loại yêu cầu.

:loại !

Sắp xếp theo địa phương

Máy tính được vận hành trên toàn thế giới, có các ngôn ngữ khác nhau với các bộ ký tự và quy tắc khác nhau. Khi nói đến việc sắp xếp đối chiếu theo vấn đề miền địa phương. Ví dụ: nếu bạn đang sống ở Nhật Bản và muốn sắp xếp các dòng theo ngôn ngữ đó thì bạn phải chỉ định nó. Các loại lệnh cũng cung cấp khả năng thiết lập tùy chọn ngôn ngữ với tôi lá cờ.

Để kiểm tra ngôn ngữ đối chiếu hiện tại, hãy sử dụng :ngôn ngữ yêu cầu.

:ngôn ngữ

Để sắp xếp theo ngôn ngữ hiện tại, hãy sử dụng:

:sắp xếp tôi

Ghi chú: Tùy chọn này có thể không hoạt động bình thường trên các hệ thống dựa trên macOS.

Sắp xếp theo số

Để sắp xếp các dòng dựa trên số thập phân đầu tiên trong một dòng, hãy sử dụng N cờ với loại yêu cầu. Việc sắp xếp sẽ tiến hành theo thứ tự tăng dần theo mặc định.

:sắp xếp n

Để sắp xếp theo thứ tự giảm dần, sử dụng ! biểu tượng sau lệnh.

:loại ! N

Sự khác biệt giữa loại sắp xếp n là lệnh sắp xếp sắp xếp các dòng theo từ vựng, bỏ qua các số trong đó. Nếu bạn muốn sắp xếp theo số thì hãy nối thêm N gắn cờ bằng lệnh sắp xếp.

Ví dụ: các dòng trong tệp sau cũng có chữ cái và số. Khi chúng ta sắp xếp nó bằng cách áp dụng loại chỉ lệnh, những dòng này sẽ được sắp xếp theo thứ tự bảng chữ cái. Mặt khác, việc áp dụng sắp xếp n lệnh sắp xếp các dòng theo số như trong hình dưới đây.

Một số tùy chọn khác để sắp xếp số được đề cập trong bảng sau.

f Sắp xếp số float
b Sắp xếp số nhị phân
Sắp xếp số bát phân
h Sắp xếp số thập lục phân

Sắp xếp theo điểm

Trong Vim, các dấu được sử dụng để đặt các vị trí cụ thể trong tệp để điều hướng dễ dàng hơn trong tệp có hàng trăm dòng. Các dấu hiệu có thể được sử dụng để thực hiện thao tác sắp xếp bằng cách sử dụng loại yêu cầu.

Giả sử bạn đã đặt hai điểm Một b .

Vì vậy, để sắp xếp tất cả các dòng từ dấu Một đánh dấu b , sử dụng lệnh sau.

: 'Một,' b loại

Trích dẫn duy nhất ( ' ) được sử dụng để truy cập vào các nhãn hiệu.

Sắp xếp theo biểu thức chính quy (RegEx)

Biểu thức chính quy (RegEx) là một trong những cách phổ biến để sắp xếp các dòng bằng cách xác định một mẫu có loại yêu cầu.

Ví dụ: để sắp xếp các dòng theo một cột có chữ cái và chữ số, hãy sử dụng /[a-z]*[0-9]+/ hoa văn với loại yêu cầu. Các r cờ sau loại lệnh được sử dụng để hướng dẫn lệnh sắp xếp dựa trên mẫu đã đề cập.

:sắp xếp r / [ a-z ] * [ 0 - 9 ] + /

Như bạn có thể thấy trong hình trên, cột cuối cùng được sắp xếp theo thứ tự bảng chữ cái. Để sắp xếp cột theo số, chỉ cần chèn N lá cờ.

Ghi chú: Tôi bỏ qua dòng đầu tiên bằng cách xác định phạm vi từ dòng 2,5.

Các r flag cho phép bạn sắp xếp tệp theo các mẫu đã cho. Nếu không có r cờ, lệnh sắp xếp sẽ sắp xếp tất cả các dòng không khớp với mẫu.

Xóa các dòng trùng lặp

Cách nhanh nhất để loại bỏ các dòng trùng lặp trong một tập tin là sử dụng loại lệnh với TRONG cờ, đại diện cho sự độc đáo.

:nhiều bạn

Lưu ý rằng việc sử dụng phương pháp này để loại bỏ các dòng trùng lặp cũng sẽ sắp xếp các dòng, điều này có thể không mong muốn trong nhiều trường hợp. Sử dụng các phương pháp thay thế, chẳng hạn như biểu thức chính quy, để xóa các dòng trùng lặp trong một tệp mà không cần sắp xếp.

Sắp xếp các dòng dựa trên một cột

Có hai phương pháp sắp xếp các dòng trong Vim dựa trên cột. Phương thức đầu tiên sử dụng lệnh sắp xếp Linux bên ngoài, trong khi phương thức thứ hai sử dụng lệnh sắp xếp tích hợp sẵn.

Lệnh bên ngoài dễ thực hiện hơn so với lệnh sắp xếp mặc định. Lưu ý rằng các lệnh bên ngoài không phải là lệnh mặc định của Vim. Nó có nghĩa là bất kỳ lệnh nào được hệ điều hành hỗ trợ.

Hãy hiểu cách nó hoạt động trong Vim.

Để sử dụng bất kỳ lệnh bên ngoài nào trong Vim, ! biểu tượng được sử dụng trước lệnh đó. Giả sử chúng ta có một tệp được phân tách bằng dấu phẩy (CSV) và muốn sắp xếp tệp theo cột thứ ba. Lệnh sẽ là

: %! loại -t ',' -k3

Các % cho biết toàn bộ vùng đệm là một lựa chọn. Các -t cờ được sử dụng để xác định dấu phân cách trường, có thể là dấu phẩy, dấu hai chấm hoặc thậm chí là dấu cách. Các -k cờ là chìa khóa cho biết vị trí trong dòng và k2 có nghĩa là trường thứ hai sau dấu phân cách được chỉ định.

Trong ví dụ, tôi đã đề cập đến phạm vi thay vì % để bỏ qua dòng đầu tiên.

: 2 , 5 ! loại -t ',' -k3

Ngoại thương loại lệnh cũng có thể hữu ích theo nhiều cách khác vì nó cung cấp nhiều tùy chọn sắp xếp khác nhau như xáo trộn, sắp xếp ngẫu nhiên và hợp nhất. Để tìm hiểu thêm về lệnh sắp xếp Linux, hãy sử dụng giúp tôi với yêu cầu.

Mặt khác, để sử dụng tính năng tích hợp sẵn của Vim loại lệnh, một mẫu biểu thức chính quy sẽ được sử dụng cùng với lệnh sắp xếp.

:loại / \v^ ( . { - } , ) { 2 } /

Trong lệnh trên:

  • \TRONG đại diện cho tab dọc
  • ^ cho biết sự bắt đầu của dòng
  • (.{-},) là một nhóm trong đó .{-} là một phiên bản không tham lam của .* , là trường phân tách
  • {2} đại diện cho 2 cột đầu tiên cần bỏ qua

Có thể thấy rằng r cờ không được sử dụng với mẫu, có nghĩa là mẫu sẽ bỏ qua bất kỳ cột phù hợp nào và sắp xếp các cột theo mẫu. Trong trường hợp này, tệp sẽ được sắp xếp dựa trên cột thứ ba. Một lần nữa trong ví dụ sau, để bỏ qua dòng đầu tiên, tôi đã sử dụng phạm vi 2,5.

Sự khác biệt cơ bản giữa .* .{-} nó có phải là .{-} sẽ xử lý thuật toán khớp ngắn nhất đầu tiên, trong khi .* sẽ phù hợp nhất có thể. Ví dụ: trong chuỗi wxyz, x.*y sẽ khớp với toàn bộ chuỗi trong khi x.{-}y sẽ chỉ khớp với xy.

Sắp xếp dòng không phân biệt chữ hoa chữ thường

Nếu bạn sắp xếp các dòng bắt đầu bằng chữ hoa và chữ thường thì lệnh sắp xếp sẽ sắp xếp các dòng bằng chữ in hoa trước. Vâng, để bỏ qua phân biệt chữ hoa chữ thường, hãy sử dụng Tôi lá cờ.

Như bạn có thể thấy trong hình ảnh sau đây, các dòng chưa sắp xếp và đã sắp xếp có cả :loại : loại tôi lệnh.

Phần kết luận

Việc sắp xếp trong Vim có thể được thực hiện dễ dàng bằng cách sử dụng Vim tích hợp sẵn loại yêu cầu. Theo mặc định, các dòng được sắp xếp theo thứ tự bảng chữ cái, tuy nhiên, nếu bạn muốn sắp xếp ngược lại thì hãy sử dụng ! ký sau lệnh. Lệnh sắp xếp thường sắp xếp toàn bộ bộ đệm; một phạm vi cũng có thể được xác định bằng dấu phân cách bằng dấu phẩy. Các N cờ được sử dụng để sắp xếp số, đồng thời loại bỏ các dòng trùng lặp TRONG cờ được sử dụng Hơn nữa, để tăng cường quá trình phân loại, bên ngoài loại lệnh cũng có thể được sử dụng trong Vim.

Để tìm hiểu thêm về cách sắp xếp trong Vim, hãy chạy lệnh :giúp sắp xếp yêu cầu.