Come posso creare e gestire facilmente le tabelle?


28

Ecco (parte di) una tabella che uso in alcuni documenti:

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

Il problema è che questo è molto imbarazzante da modificare; se cambio una cosa, devo riallineare (manualmente) tutto, che è una PITA

Ci sono modi più semplici per gestirlo? Non mi interessa il layout esatto sopra in quanto tale, ma vorrei mantenere l'involucro della terza colonna ...


1
A parte questo, se questo è ricostruitoText, potresti considerare di esaminare list-table(recentemente ho convertito molte tabelle in questo, perché le tabelle ASCII sono difficili da mantenere e
differiscono

Risposte:


35

Sono l'autore del plugin vim-table-mode . Ho trascorso parecchio tempo a costruire e migliorare questo, in particolare con il feedback della community e si rivolge esattamente a questo caso d'uso.

Una breve guida rapida: si accede alla "modalità tabella" con il :TableModeEnablecomando, quindi è possibile digitare semplicemente:

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

E vim-table-mode si occuperà automaticamente dell'allineamento al volo, in modo che appaia come:

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

Quando si modifica la tabella in un secondo momento, vim-table-mode si occuperà anche dell'allineamento.

Puoi lasciare la 'modalità tabella' con :TableModeDisable.


Il suo nucleo consiste nel creare facilmente tabelle che verranno formattate automaticamente durante la digitazione. Offre molti mapping per spostarsi e manipolare anche le tabelle (uno particolarmente utile è <Leader>tdcrimuovere un'intera colonna). Tutto quello che devi fare è abilitare la modalità tabella e questi si avvieranno e puoi semplicemente digitare via senza preoccuparti della formattazione.

Ha molte più funzioni di quelle visualizzate qui, come la possibilità di allineare le colonne a destra con un piccolo suggerimento sull'intestazione. Ha anche un motore di formula per fogli di calcolo accurato che consente di definire formule ed eseguire calcoli come farebbe un normale foglio di calcolo.

È stato progettato per essere estremamente flessibile e configurabile in modo da poter modificare diversi aspetti delle tabelle e dei bordi creati.

Ho anche creato alcuni screencast cercando di mostrare i suoi poteri. Questo screencast è il più recente , ma da allora ci sono stati molti miglioramenti.


5
Grazie; Ho modificato un po 'la tua risposta per aggiungere alcune informazioni pratiche sull'uso (leggeva un po' come un annuncio prima) ... Una cosa che non ero in grado di fare con la modalità vim-table è il wrapping della terza colonna come nell'esempio nella mia domanda ... È possibile?
Martin Tournoij,

@Carpetsmoker grazie per la modifica. Bene, puoi avvolgerlo manualmente, non c'è modo di farlo automaticamente.
Dhruva Sagar,

6

Se è possibile utilizzare sede column, una soluzione da riga di comando che si avvicina sarebbe:

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

È possibile combinare questo con la selezione visiva e '<,'>o con i numeri di riga.

Contro:

  • Usi sede column. Vim è secondario. I sedcomandi possono probabilmente essere cambiati in :substitutecomandi vim , ma columnè cruciale.
  • I separatori di riga ( ---...-) vengono riempiti, ma ho dei sospetti sulla sua affidabilità.
  • Non so quanto sia portatile $'\x01'.

fonti:


Piccoli inconvenienti a parte (che probabilmente possono essere risolti), questo sembra promettente ... L'unica cosa che non posso fare è il wrapping della terza colonna però: - /
Martin Tournoij

5

Se non si desidera installare alcun plug-in e si desidera modificare le tabelle mantenendo l'allineamento:

- utilizzare la modalità VREPLACE integrata , attivata da gR.

(Assicurati di avere l'ultima versione di vim e controlla se è compilato con +vreplacefunzionalità, digitando vim --versionsul terminale)

inserisci qui la descrizione dell'immagine (il mio statusline è impostato per mostrare REPLACE per entrambe le modalità REPLACE e VREPLACE)

Se vuoi saperne di più sulle modalità REPLACE e VREPLACE , consulta questo articolo .


3

Ho creato il tablign dello strumento da riga di comando per questo scopo; funziona anche da Vim. Installa semplicemente con

[sudo -H] pip3 install tablign

segna la tabella in vim e chiama

:'<,'>:!tablign

(vim riempie i primi caratteri per te se hai segnato la tabella.)

Non può ancora eseguire larghezze di colonna fisse, ma ciò potrebbe essere aggiunto in caso di necessità.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.