2010-10-05 33 views
8

Nếu tôi phải sắp xếp các hàng sau dựa trên giá trị bên trái của '='. Nhưng việc sắp xếp nên mở rộng vùng chọn thành cột sau '=' đồng thời. Thtz là chúng tôi không phải sắp xếp cột sau '=' ::sắp xếp các hàng trong trình chỉnh sửa 'VI'

50599=1000000 
50454=00000054 
50080=00005464 
50098=00000875 
50661=00000665 
50788=10000035 
50988=10000006 
50994=10000656 
57009=00000005 
57022=10000008 
57040=10000005 
57000=10000005 
57060=10000089 
57067=10005640 
57102=00000765 
57190=00000867 

Điều này cần được thực hiện trong 'VI' chỉnh sửa tệp.

KẾT QUẢ nên ::

50080=00005464  
50098=00000875 ...etc. 

Trả lời

15

Câu trả lời này đang đến muộn, nhưng có thể vẫn được có liên quan, trong chế độ hình ảnh chọn khối bạn muốn sắp xếp và chạy:

: loại

này nên làm việc

21

Hãy thử:

:%!sort 

Nó sẽ sắp xếp theo toàn tuyến theo thứ tự abc. Nếu bạn muốn sắp xếp số lượng (ví dụ: số trong cột đầu tiên có thể có widt khác nhau), sau đó thử:

:%!sort -n 

Đừng lo lắng về =, nó sẽ không thay đổi bất kỳ dòng, nó sẽ chỉ thay đổi của họ gọi món.

+5

Vim có lệnh sắp xếp nội bộ: ':% sort n' – Benoit

5

Bạn có thể làm như sau để xem kết quả sắp xếp:

:!sort % 

Giải thích:

  • :: để vào chế độ cũ.
  • !: cho phép bạn chạy lệnh shell .
  • %: tên của tệp hiện đang mở .

Để sắp xếp các tập tin bằng cách thay đổi nó, bạn có thể chuyển hướng đầu ra của nó vào một tập tin tạm thời và sau đó sao chép nội dung của nó lại thành file gốc:

2years
:!(sort %>/tmp/tmp;cp -f /tmp/tmp %) 
+0

Hmm, tệp bị hỏng. Tôi quên nói với bạn sthin: đây là một tập tin xml có một số thuộc tính trong nó như :: – ErAB

Các vấn đề liên quan