Làm thế nào tôi có thể dễ dàng tạo và duy trì các bảng?


28

Đây là (một phần) một bảng tôi sử dụng trong một số tài liệu:

+---------------+------------------------+---------------------------------------+
| TASK NAME     | WHEN                   | DESCRIPTION                           |
+---------------+------------------------+---------------------------------------+
| db:seed       | On every update        | Data required for the application to  |
|               |                        | run; you should always be able to     |
|               |                        | safely execute this multiple times    |
|               |                        | for an update.                        |
| db:truncate   | Manually (dangerous!)  | TRUNCATE all tables but postal_codes  |
| postal_codes  | Once                   | Load the postal_codes table           |
+---------------+------------------------+---------------------------------------+

Vấn đề là điều này rất khó xử để chỉnh sửa; nếu tôi thay đổi một thứ, tôi cần (thủ công) sắp xếp lại mọi thứ, đó là PITA

Có cách nào dễ dàng hơn để quản lý này? Tôi không quan tâm đến bố cục chính xác ở trên như vậy, nhưng muốn giữ lại cột thứ 3 ...


1
Một bên, nếu đây là tái cấu trúc, bạn có thể xem xét list-table(gần đây tôi đã chuyển đổi nhiều bảng thành này, vì các bảng ascii khó duy trì và khác biệt kém)
ideaman42

Câu trả lời:


35

Tôi là tác giả của plugin vim-table-mode . Tôi đã dành khá nhiều thời gian để xây dựng và cải thiện điều này, đặc biệt là với phản hồi của cộng đồng và nó phục vụ chính xác cho trường hợp sử dụng này.

Khởi động nhanh ngắn: Bạn nhập 'chế độ bảng' bằng :TableModeEnablelệnh, sau đó bạn có thể chỉ cần gõ:

||
| MOVIE | QUOTE|
||
| Blade Runner | Like tears in the rain |
| Monty Python's quest for the holy grail | Are you suggesting that coconuts migrate? |
||

Và chế độ bảng vim sẽ tự động đảm nhiệm việc căn chỉnh cho bạn khi đang di chuyển, do đó, nó sẽ trông như:

|-----------------------------------------+-------------------------------------------|
| MOVIE                                   | QUOTE                                     |
|-----------------------------------------+-------------------------------------------|
| Blade Runner                            | Like tears in the rain                    |
| Monty Python's quest for the holy grail | Are you suggesting that coconuts migrate? |
|-----------------------------------------+-------------------------------------------|

Khi chỉnh sửa bảng sau, chế độ bảng vim cũng sẽ đảm nhiệm việc căn chỉnh cho bạn.

Bạn có thể để 'chế độ bảng' với :TableModeDisable.


Cốt lõi của nó là về việc dễ dàng tạo các bảng sẽ được định dạng tự động khi bạn nhập. Nó cũng cung cấp rất nhiều ánh xạ để di chuyển và thao tác các bảng (một cách đặc biệt hữu ích là <Leader>tdcxóa toàn bộ một cột). Tất cả bạn phải làm là kích hoạt chế độ bảng và những thứ này sẽ hoạt động và bạn chỉ cần gõ đi mà không cần lo lắng về định dạng.

Nó có nhiều tính năng hơn hiển thị ở đây, chẳng hạn như khả năng căn chỉnh các cột với một chút gợi ý về tiêu đề. Nó cũng có một công cụ công thức bảng tính gọn gàng cho phép người ta xác định các công thức và thực hiện các tính toán như một bảng tính thông thường.

Nó được xây dựng để cực kỳ linh hoạt & có thể định cấu hình để bạn có thể thay đổi một số khía cạnh của bảng và đường viền được tạo.

Tôi cũng đã tạo ra một vài screencasts cố gắng thể hiện sức mạnh của nó. Screencast này là cái gần đây nhất , nhưng xin lưu ý rằng đã có nhiều cải tiến kể từ đó.


5
Cảm ơn; Tôi đã chỉnh sửa câu trả lời của bạn một chút để thêm một số thông tin sử dụng thực tế (nó đọc hơi giống quảng cáo trước đây) ... Một điều tôi không thể làm với chế độ vim-bàn là gói cột thứ 3 như trong ví dụ trong câu hỏi của tôi ... Điều này có thể không?
Martin Tournoij

@Carpetsmoker cảm ơn vì đã chỉnh sửa. Vâng, bạn có thể bọc nó bằng tay, không có cách nào để làm điều đó tự động.
Dhruva Sagar

6

Nếu bạn có thể sử dụng sedcolumn, một giải pháp dòng lệnh đến gần sẽ là:

!sed 's/[- ]*\([+|]\)/'$'\x01''\1/g' | column -ts $'\x01' | sed '/^[-+ ]*$/s/ /-/g'

Bạn có thể kết hợp điều này với lựa chọn trực quan và '<,'>hoặc với số dòng.

Nhược điểm:

  • Sử dụng sedcolumn. Vim là sự cố. Các sedlệnh có thể được thay đổi thành :substitutecác lệnh vim , nhưng columnrất quan trọng.
  • Các dấu phân cách hàng ( ---...-) được đệm, nhưng tôi có nghi ngờ về độ tin cậy của nó.
  • Tôi không biết làm thế nào di động $'\x01'.

Nguồn:


Một chút trục trặc sang một bên (có thể có thể được sửa chữa), điều này có vẻ đầy hứa hẹn ... Điều duy nhất tôi không thể thực hiện được là bọc cột thứ 3 mặc dù: - /
Martin Tournoij

5

Nếu bạn không muốn cài đặt bất kỳ plugin nào và bạn muốn chỉnh sửa các bảng giữ căn chỉnh:

- sử dụng chế độ VREPLACE tích hợp , được kích hoạt bởi gR.

(Đảm bảo rằng bạn có phiên bản mới nhất của vim và kiểm tra xem nó có được biên dịch với +vreplacetính năng không, gõ vim --versiontrên thiết bị đầu cuối)

nhập mô tả hình ảnh ở đây (dòng trạng thái của tôi được đặt để hiển thị REPLACE cho cả hai chế độ REPLACE và VREPLACE)

Nếu bạn muốn biết thêm về chế độ REPLACEVREPLACE , hãy xem bài viết này .


3

Tôi đã tạo tablign công cụ dòng lệnh cho mục đích này; nó hoạt động từ bên trong vim là tốt. Đơn giản chỉ cần cài đặt với

[sudo -H] pip3 install tablign

đánh dấu bảng trong vim và gọi

:'<,'>:!tablign

(vim điền vào một vài ký tự đầu tiên cho bạn nếu bạn đã đánh dấu bảng.)

Nó không thể làm độ rộng cột cố định, nhưng có thể được thêm nếu cần.

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.