2011-06-30 33 views
6

Làm thế nào tôi có thể ngay thẳng (và trái sắp xếp?) Một khối số hoặc văn bản trong vim như thế này:Làm cách nào để căn chỉnh các cột có số lớn nhất hoặc chuỗi lớn nhất là chỉ báo căn chỉnh?

từ:

45 209 25  1 
2  4  2  3 
34  5 300  5 
34 120 34 12 

này:

45 209 25 1 
2  4  2 3 
34  5 300 5 
34 120 34 12 

đó có nghĩa là số lớn nhất hoặc chuỗi lớn nhất trong mỗi cột không di chuyển.
Trong cột đầu tiên là 45 + 34, trong cột thứ hai 209 + 120, cột thứ ba 300 và cột cuối cùng 12.

+0

Bạn đã sử dụng dấu cách để nhận dữ liệu nhập? Khi tôi sử dụng các tab để nhập các cột số, chúng được căn trái tự nhiên. – NorthGuard

+0

@inTide, có dấu cách (Tôi không sử dụng các tab trong bộ đệm của mình) – Reman

Trả lời

2

Với plugin Align và AlignMaps: chọn sử dụng V, sau đó \ anum (AlignMaps đi kèm với Căn chỉnh). Một ưu điểm của \ anum là nó cũng xử lý các dấu thập phân (dấu phẩy) và ký pháp khoa học.

+0

Plugin của bạn rất tuyệt. Nó có thể làm nhiều việc nhưng nó ít dễ hiểu hơn. Một nhược điểm khác mà tôi thấy là bạn không thể đặt bản đồ vào dòng lệnh p.e. sử dụng chúng trong menu.vim hoặc vimrc. Và .... plugin sử dụng rất nhiều bản đồ bắt đầu bằng các chữ cái khác nhau. Tôi ước họ sẽ dễ nhớ hơn một chút (hoặc thay đổi bởi người dùng). Tôi không thích menu DrChip. (thậm chí tệ hơn .... tôi đã thử \ anum trước đây, điều duy nhất mà tôi không biết là tôi phải chọn đường line.) – Reman

3

Bạn có thể xem plugin Tabularize. Vì vậy, nếu bạn có một cái gì đó giống như

45 209 25 1 
2 4 2 3 
34 5 300 5 
34 120 34 12 

chỉ cần chọn những dòng trong chế độ hình ảnh và gõ :Tab/ và nó sẽ định dạng nó như

45 209 25 1 
2 4  2  3 
34 5  300 5 
34 120 34 12 

Ngoài ra, có vẻ như bạn không có một số lượng tương đương không gian tách các con số tại thời điểm này. Vì vậy, trước khi bạn sử dụng plugin, thay thế tất cả các không gian nhiều với một không gian duy nhất với the following regex:

%s![^ ]\zs \+! !g 
+0

Vui lòng xem câu hỏi của tôi. (btw ... Tôi có cả plugin căn chỉnh và dạng bảng nhưng không thể tìm ra cách giải quyết câu hỏi của mình). – Reman

5

Hãy nhìn vào các plugin align, nó có thể làm điều này và nhiều hơn nữa. Công cụ tuyệt vời trong vành đai tiện ích của bạn!

Tìm thấy here

Sau một vimhelp nghiêm trọng/đọc tôi thấy AlignCtrl bản đồ chính xác ... Nhìn bề ngoài chọn bàn, ví dụ bằng cách sử dụng ggVG, sau đó làm một \Tsp tức <leader>Tsp

Sau đó, tôi có được điều này:

45 209 25 1 
    2  4  2 3 
34  5 300 5 
34 120 34 12 

Từ vimhelp:

\Tsp : use Align to make a table separated by blanks |alignmap-Tsp| 
     (right justified) 
+0

Plugin 'sắp xếp' rất đẹp, nhưng plugin 'Tabularize' (được đề cập bởi yoda) vượt trội hơn rất nhiều. – Jeet

3

Với Align plugin bạn có thể chọn các hàng bạn muốn sắp xếp và nhấn :

<Leader>Tsp

Từ Align.txt

\Tsp : use Align to make a table separated by blanks |alignmap-Tsp| 
      (right justified) 

(Sự giúp đỡ nhắc \ vì nó là người lãnh đạo mặc định nhưng trong trường hợp bạn đã thay đổi nó để cái gì khác bạn phải thích ứng cho phù hợp)

Chỉ cần cố gắng trên của tôi cài đặt, tôi có kết quả như sau:

45 209 25 1 
2  4  2 3 
34  5 300 5 
34 120 34 12 

Theo tôi Align plugin là rất tốt nhưng "căn chỉnh bản đồ" và các lệnh khác nhau không thực sự dễ nhớ.

+0

Có, tôi đồng ý. DrChip (tại sao anh ta lại tự gọi mình là Dr.chip?;)) Tạo ra những thứ tốt nhưng hầu hết mọi thứ khó tìm, để hiểu và không thể sử dụng được vì nó có thể. – Reman

2

Tôi nghĩ điều tốt nhất để làm là trước hết phải ăn tất cả nhiều không gian với

:{range}s/ \+/ /g 

Và sau đó gọi Tabularize

:Tab//r1 

Hoặc thay đổi điều đó r để l.

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