Wie kann ich auf einfache Weise Tabellen erstellen und verwalten?

28

Hier ist ein Teil einer Tabelle, die ich in einigen Dokumentationen verwende:

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

Das Problem ist, dass die Bearbeitung sehr umständlich ist. Wenn ich eine Sache ändere, muss ich alles (manuell) neu ausrichten, was ein PITA ist

Gibt es einfachere Möglichkeiten, dies zu handhaben? Das obige Layout ist mir als solches egal, aber ich möchte den Zeilenumbruch der 3. Spalte beibehalten ...

Martin Tournoij
quelle
1
Abgesehen davon, wenn dies reStructuredText ist, könnten Sie überlegen, in list-table(vor kurzem habe ich viele Tabellen in diese konvertiert, weil ASCII-Tabellen schwer zu pflegen und diff schlecht sind)
ideasman42

Antworten:

35

Ich bin der Autor des Plugins vim-table-mode . Ich habe ziemlich viel Zeit damit verbracht, dies aufzubauen und zu verbessern, insbesondere mit Community-Feedback, und es ist genau auf diesen Anwendungsfall zugeschnitten.

Ein kurzer Schnelleinstieg: Sie rufen mit dem :TableModeEnableBefehl den Tabellenmodus auf und können dann einfach Folgendes eingeben :

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

Und der vim-table-mode kümmert sich automatisch um die Ausrichtung für Sie, so dass es so aussieht:

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

Wenn Sie die Tabelle später bearbeiten, übernimmt der vim-table-mode auch die Ausrichtung für Sie.

Sie können den 'Tabellenmodus' mit verlassen :TableModeDisable.


Im Mittelpunkt steht die einfache Erstellung von Tabellen, die während der Eingabe automatisch formatiert werden. Es bietet eine Vielzahl von Zuordnungen, um Tabellen zu verschieben und zu bearbeiten (besonders nützlich ist <Leader>tdcdas Entfernen einer ganzen Spalte). Alles, was Sie tun müssen, ist, den Tabellenmodus zu aktivieren. Diese werden aktiviert, und Sie können einfach wegschreiben, ohne sich um die Formatierung kümmern zu müssen.

Es verfügt über viel mehr Funktionen als hier angezeigt, z. B. die Möglichkeit, Spalten mit einem kleinen Hinweis auf die Überschrift nach rechts auszurichten. Es hat auch eine ordentliche Tabellenkalkulations-Formel-Engine, mit der man Formeln definieren und Berechnungen durchführen kann, wie es eine normale Tabellenkalkulation tun würde.

Es ist äußerst flexibel und konfigurierbar, sodass Sie verschiedene Aspekte der erstellten Tabellen und Rahmen ändern können.

Ich habe auch einige Screencasts erstellt, um seine Stärken zu demonstrieren. Dieser Screencast ist der neueste , aber bitte beachten Sie, dass es seitdem viele Verbesserungen gegeben hat.

Dhruva Sagar
quelle
5
Vielen Dank; Ich habe Ihre Antwort ein wenig überarbeitet, um einige praktische Verwendungsinformationen hinzuzufügen (sie lesen sich ein bisschen wie eine Anzeige zuvor). Eine Sache, die ich mit dem Vim-Table-Modus nicht machen konnte, ist das Umbrechen der 3. Spalte wie im beispiel in meiner frage ... ist das möglich?
Martin Tournoij
@Carpetsmoker danke für die Bearbeitung. Nun, Sie können es manuell verpacken, es gibt keine Möglichkeit, dies automatisch zu tun.
Dhruva Sagar
6

Wenn Sie sedund verwenden können column, wäre eine nahe beieinander liegende Befehlszeilenlösung:

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

Sie können dies mit einer visuellen Auswahl und / '<,'>oder mit Zeilennummern kombinieren .

Nachteile:

  • Verwendet sedund column. Vim ist nebensächlich. Die sedBefehle können wahrscheinlich in vim- :substituteBefehle geändert werden, sind jedoch von columnentscheidender Bedeutung.
  • Die Zeilentrennzeichen ( ---...-) werden aufgefüllt, aber ich habe Zweifel an der Zuverlässigkeit.
  • Ich weiß nicht, wie portabel es $'\x01'ist.

Quellen:

muru
quelle
Abgesehen von kleinen Pannen (die wahrscheinlich behoben werden können), sieht dies vielversprechend aus ... Das einzige, was ich nicht schaffen kann, ist das Umbrechen der 3. Spalte: - /
Martin Tournoij
5

Wenn Sie keine Plugins installieren und Tabellen bearbeiten möchten, die die Ausrichtung beibehalten:

- Verwenden Sie den eingebauten VREPLACE- Modus, der durch aktiviert wird gR.

(Stellen Sie sicher, dass Sie über die neueste Version von vim +vreplaceverfügen, und überprüfen Sie, ob diese mit der Funktion kompiliert wurde. Geben Sie dies vim --versionauf dem Terminal ein.)

Bildbeschreibung hier eingeben (In meiner Statuszeile wird REPLACE für den REPLACE- und den VREPLACE-Modus angezeigt.)

Wenn Sie mehr über die Modi REPLACE und VREPLACE erfahren möchten, lesen Sie diesen Artikel .

rossijonas
quelle
3

Zu diesem Zweck habe ich das Tablign des Befehlszeilentools erstellt . es funktioniert auch von vim aus. Einfach mit installieren

[sudo -H] pip3 install tablign

markiere den tisch in vim und rufe an

:'<,'>:!tablign

(vim füllt die ersten Zeichen für Sie aus, wenn Sie die Tabelle markiert haben.)

Feste Spaltenbreiten sind noch nicht möglich, können jedoch bei Bedarf hinzugefügt werden.

Bildbeschreibung hier eingeben

Nico Schlömer
quelle