Як я можу легко створювати та підтримувати таблиці?


28

Ось (частина) таблиця, яку я використовую в деякій документації:

+---------------+------------------------+---------------------------------------+
| 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           |
+---------------+------------------------+---------------------------------------+

Проблема в тому, що це дуже незручно редагувати; якщо я зміню одне, мені потрібно (вручну) все вирівняти, що є ПДФА

Чи є простіші способи управління цим? Мене не хвилює точний макет як такий, але я хотів би зберегти обгортання 3-го стовпця ...


1
Убік, якщо це reStructuredText, ви можете розглянути питання list-table(останнім часом я перетворив багато таблиць на це, тому що таблиці ascii важко підтримувати і погано
відрізняються

Відповіді:


35

Я автор плагіну vim-table-mode . Я витратив досить багато часу на створення та вдосконалення цього, особливо з відгуками громади, і це стосується саме цього випадку використання.

Короткий швидкий старт: Ви вводите :TableModeEnableкоманду «режим таблиці» за допомогою команди, а потім просто введіть:

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

І режим vim-table автоматично автоматично піклується про вирівнювання для вас, щоб воно виглядало так:

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

Під час редагування таблиці пізніше режим vim-table також подбає про вирівнювання для вас.

Ви можете залишити "режим столу" за допомогою :TableModeDisable.


Її суть полягає у легкому створенні таблиць, які будуть автоматично відформатовані під час введення тексту. Він пропонує безліч відображень для переміщення та маніпулювання таблицями (особливо корисним є <Leader>tdcвидалення цілого стовпця). Все, що вам потрібно зробити, це ввімкнути режим таблиці, і вони запускаються, і ви можете просто набрати текст, не турбуючись про форматування.

Він має набагато більше функцій, ніж показано тут, наприклад, можливість правильного вирівнювання стовпців з невеликим натяком на заголовок. Він також має чітку формулу формули електронних таблиць, яка дозволяє визначати формули та виконувати обчислення, як звичайна таблиця.

Він побудований на надзвичайно гнучку та настроювану форму, щоб ви могли змінити декілька аспектів створених таблиць та меж.

Я також створив декілька екранізацій, намагаючись показати свої сили. Цей скріншот є останнім , але врахуйте, що з тих пір було вдосконалено багато.


5
Спасибі; Я трохи відредагував вашу відповідь, щоб додати деяку практичну інформацію про використання (вона читалася трохи як оголошення раніше) ... Одне, що мені не вдалося зробити в режимі vim-table - це обгортання 3-го стовпця як у прикладі мого запитання ... Чи це можливо?
Мартін Турной

@Carpetsmoker дякую за редагування. Ну, ви можете обернути це вручну, немає ніякого способу зробити це автоматично.
Сахр Друва

6

Якщо ви можете використовувати sedта column, рішення командного рядка, що наближається, було б:

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

Ви можете поєднувати це з візуальним вибором та '<,'>або з номерами рядків.

Мінуси:

  • Використання sedта column. Вім випадковий. Ці sedкоманди , ймовірно , можуть бути змінені на VIM :substituteкоманд, але columnмають вирішальне значення.
  • Роздільники рядків ( ---...-) забиваються, але у мене є підозри щодо його надійності.
  • Я не знаю, наскільки портативний $'\x01'.

Джерела:


Невеликі збої вбік (що, можливо, можливо, виправлено), це виглядає багатообіцяюче ... Єдине, чого я не можу зробити, це обгортання 3-ї колони, хоча: - /
Мартін Турной

5

Якщо ви не хочете встановлювати плагіни і ви хочете редагувати таблиці, зберігаючи вирівнювання:

- використовувати вбудований в VREPLACE режимі, активується gR.

(Переконайтеся, що у вас найновіша версія vim, і перевірте, чи вона складена з +vreplaceфункцією, набравши vim --versionна терміналі)

введіть тут опис зображення (у моєму статусі встановлено показ ЗАМІНИ для режимів ЗАМІНИ та VREPLACE)

Якщо ви хочете дізнатися більше про REPLACE і VREPLACE режимах, перевірити цю статтю .


3

Я створив інструмент командного рядка tablign для цієї мети; він працює і зсередини vim. Просто встановіть за допомогою

[sudo -H] pip3 install tablign

позначте таблицю vim та зателефонуйте

:'<,'>:!tablign

(vim заповнює перші кілька символів для вас, якщо ви позначили таблицю.)

Він не може робити фіксовану ширину стовпця, але це може бути додано, якщо виникне потреба.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.