Einstellung (oder * einfacher * Modus) zum Bearbeiten von durch Tabulatoren getrennten Spalten


7

Ich suche entweder eine integrierte Einstellung oder einen einfachen Modus zum Anzeigen und Bearbeiten von durch Tabulatoren getrennten Spalten (TSV-Dateien).

Ich brauche nur, dass der TSV-Text so angezeigt wird, dass die vertikale Ausrichtung der Spalten und die horizontale Ausrichtung der Zeilen berücksichtigt werden. Wenn das Zeilenumbruch umgeschaltet werden könnte, wäre das süß, aber zweitrangig.

Die Suche nach Spaltenanzeige in Emacs wird dadurch erschwert, dass das Wort "Spalte" in Emacs bereits eine andere Bedeutung hat.

(Ich habe " einfach " angegeben, um Antworten wie die Spaltenansicht des Organisationsmodus zu entmutigen. Im Moment sind meine Anforderungen äußerst einfach und ich möchte mich nicht mit der Installation, dem Laden und dem Erlernen eines Monstermodus wie der Organisation auseinandersetzen.)


3
Sie müssen nicht alle Funktionen des Organisationsmodus kennenlernen, um eine Datei in der Spaltenansicht anzuzeigen.
Nispio

Keine Antwort, aber vielleicht hilfreich als allgemeiner Tipp: Es gibt einen eingebauten Befehl zum Umschalten des Zeilenumbruchs : toggle-truncate-lines.
Itsjeyd

5
Vielleicht möchten Sie sich csv-modeELPA ansehen. Es unterstützt das Festlegen eines anderen Trennzeichens als ,.
Vamsi

@Vamsi bitte als csv-modeAntwort in Betracht ziehen .
Jordon Biondo

Antworten:


7

Dies sollte Ihnen die Möglichkeit geben, Org-Tabellen praktisch ohne Lernkurve auszuprobieren. Fügen Sie den folgenden Code in Ihre Init-Datei ein und führen Sie ihn aus:

(defun my-export-to-parent ()
  "Exports the table in the current buffer back to its parent DSV file and
    then closes this buffer."
  (let ((buf (current-buffer)))
    (org-table-export parent-file export-func)
    (set-buffer-modified-p nil)
    (switch-to-buffer (find-file parent-file))
    (kill-buffer buf)))

(defun my-edit-dsv-as-orgtbl (&optional arg)
  "Convet the current DSV buffer into an org table in a separate file. Saving
    the table will convert it back to DSV and jump back to the original file"
  (interactive "P")
  (let* ((buf (current-buffer))
         (file (buffer-file-name buf))
         (txt (substring-no-properties (buffer-string)))
         (org-buf (find-file-noselect (concat (buffer-name) ".org"))))
    (save-buffer)
    (with-current-buffer org-buf
      (erase-buffer)
      (insert txt)
      (org-table-convert-region 1 (buffer-end 1) arg)
      (setq-local parent-file file)
      (cond 
       ((equal arg '(4)) (setq-local export-func "orgtbl-to-csv"))
       ((equal arg '(16)) (setq-local export-func "orgtbl-to-tsv"))
       (t (setq-local export-func "orgtbl-to-tsv")))
      (add-hook 'after-save-hook 'my-export-to-parent nil t))
    (switch-to-buffer org-buf)
    (kill-buffer buf)))

;; Open the current TSV file as an Org table
(global-set-key (kbd "C-c |") 'my-edit-dsv-as-orgtbl)

Jetzt können Sie aus einer TSV-Datei drücken C-c |und Ihre Tabelle wird in eine Org-Tabelle konvertiert. (Damit C-u C-c |funktioniert es auch für eine CSV-Datei.) Wenn Sie mit dem Bearbeiten der Org-Tabelle fertig sind, drücken Sie C-x C-sund die Org-Tabelle wird wieder in TSV konvertiert und wieder in der Originaldatei gespeichert.


Dies funktioniert sehr gut für kleine Tische. Möglicherweise wird es jedoch aufgrund der Art und Weise, wie org-modemit Tabellen umgegangen wird, langsam und verzögert, wenn Tabellen für meinen Fall etwa 1000 Zeilen und 10 Spalten enthalten.
Biocyberman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.