Jak mogę łatwo tworzyć i utrzymywać tabele?


28

Oto (część) tabela, której używam w niektórych dokumentacjach:

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

Problem polega na tym, że edytowanie jest bardzo niewygodne; jeśli zmienię jedną rzecz, muszę (ręcznie) ponownie wyrównać wszystko, co jest PITA

Czy są na to łatwiejsze sposoby? Nie dbam o dokładny powyższy układ jako taki, ale chciałbym zachować zawijanie trzeciej kolumny ...


1
Na marginesie, jeśli jest to reStructuredText, możesz rozważyć przyjrzenie się list-table(ostatnio przekonwertowałem na to wiele tabel, ponieważ tabele ascii są trudne w utrzymaniu i słabo się
różnią

Odpowiedzi:


35

Jestem autorem wtyczki vim-table-mode . Spędziłem sporo czasu na budowaniu i ulepszaniu tego, szczególnie z opiniami społeczności i dotyczy to dokładnie tego przypadku użycia.

Krótki szybki start: wchodzisz w „tryb tabeli” za pomocą :TableModeEnablepolecenia, a następnie możesz po prostu wpisać:

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

Tryb vim-table automatycznie zadba o wyrównanie w locie, dzięki czemu będzie wyglądać jak:

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

Podczas późniejszej edycji tabeli tryb vim-table zajmie się również wyrównaniem.

Możesz wyjść z „trybu tabeli” za pomocą :TableModeDisable.


Jego trzon polega na łatwym tworzeniu tabel, które będą automatycznie formatowane podczas pisania. Oferuje wiele mapowań do poruszania się i manipulowania tabelami (szczególnie przydatne jest <Leader>tdcusunięcie całej kolumny). Wszystko, co musisz zrobić, to włączyć tryb tabeli, a one się uruchomią i możesz po prostu pisać bez obawy o formatowanie.

Ma o wiele więcej funkcji niż pokazano tutaj, takich jak możliwość wyrównywania kolumn z małą wskazówką na nagłówku. Ma także zgrabny silnik formuł arkusza kalkulacyjnego, który pozwala definiować formuły i wykonywać obliczenia jak zwykły arkusz kalkulacyjny.

Jest zbudowany tak, aby był wyjątkowo elastyczny i konfigurowalny, dzięki czemu możesz zmieniać kilka aspektów tworzonych tabel i ramek.

Stworzyłem też kilka screencastów, próbując pokazać jego moce. Ten screencast jest najnowszy , ale od tego czasu wprowadzono wiele ulepszeń.


5
Dzięki; Zmodyfikowałem nieco twoją odpowiedź, aby dodać praktyczne informacje o użytkowaniu (czytało to trochę jak reklamę wcześniej) ... Jedną z rzeczy, których nie byłem w stanie zrobić w trybie tabeli vim, jest zawijanie trzeciej kolumny jak w przykładzie w moim pytaniu ... Czy to możliwe?
Martin Tournoij,

@Carpetsmoker dzięki za edycję. Możesz owinąć go ręcznie, nie ma sposobu, aby to zrobić automatycznie.
Dhruva Sagar,

6

Jeśli możesz użyć sedi column, rozwiązaniem wiersza polecenia, które się zbliży, byłoby:

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

Możesz to połączyć z selekcją wizualną '<,'>lub z numerami linii.

Cons:

  • Używa sedi column. Vim jest przypadkowy. Te sedpolecenia można prawdopodobnie zmieniony na vim :substitutepoleceń, ale columnma zasadnicze znaczenie.
  • Separatory wierszy ( ---...-) są wypełnione, ale mam podejrzenia co do ich niezawodności.
  • Nie wiem, jak przenośny $'\x01'jest.

Źródła:


Pomijając drobne usterki (które prawdopodobnie można naprawić), wygląda to obiecująco ...
Jedyne,

5

Jeśli nie chcesz instalować żadnych wtyczek i chcesz edytować tabele zachowując wyrównanie:

- użyj wbudowanego trybu VREPLACE , aktywowanego przez gR.

(Upewnij się, że masz najnowszą wersję vima i sprawdź, czy jest ona skompilowana z +vreplacefunkcją, pisząc vim --versionna terminalu)

wprowadź opis zdjęcia tutaj (moja linia statusu jest ustawiona tak, aby wyświetlać WYMIANA zarówno dla trybów WYMIANA, jak i VREPLACE)

Jeśli chcesz dowiedzieć się więcej o trybach REPLACE i VREPLACE , zapoznaj się z tym artykułem .


3

W tym celu stworzyłem tablign narzędzia wiersza poleceń ; działa również z poziomu vima. Po prostu zainstaluj za pomocą

[sudo -H] pip3 install tablign

zaznacz tabelę w vimie i zadzwoń

:'<,'>:!tablign

(vim wypełnia kilka pierwszych znaków, jeśli zaznaczyłeś tabelę).

Nie można jeszcze ustalić stałych szerokości kolumn, ale można je dodać, jeśli zajdzie taka potrzeba.

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.