Cài đặt (hoặc chế độ * đơn giản *) để chỉnh sửa các cột được phân tách bằng tab


7

Tôi đang tìm kiếm một số cài đặt tích hợp hoặc chế độ đơn giản để xem và chỉnh sửa các cột được phân tách bằng tab (tệp TSV).

Tất cả những gì tôi cần là cho văn bản TSV được hiển thị theo cách tôn trọng sự liên kết dọc của các cột và căn chỉnh ngang của các hàng. Nếu quấn dòng có thể được bật, đó sẽ là ngọt, nhưng thứ cấp.

Tìm kiếm để xem cột trong emacs trở nên khó khăn bởi thực tế là từ "cột" đã có một ý nghĩa khác trong Emacs.

(Tôi đã chỉ định " đơn giản " để ngăn cản câu trả lời như xem cột org-mode của. Tại thời điểm này nhu cầu của tôi rất đơn giản, và tôi không muốn đối mặt với cài đặt, tải, và tìm hiểu về một chế độ quái vật như org).


3
Bạn không cần phải tìm hiểu mọi tính năng mà chế độ org cung cấp chỉ để xem tệp trong chế độ xem cột.
nispio

Không phải là một câu trả lời, nhưng có thể hữu ích như một mẹo chung: Có một lệnh tích hợp để chuyển đổi dòng gói : toggle-truncate-lines.
itjeyd

5
Bạn có thể muốn xem xét csv-modetrong ELPA. Nó hỗ trợ thiết lập một ký tự phân tách khác nhau từ ,.
Vamsi

@Vamsi hãy xem xét việc đăng bài csv-modenhư một câu trả lời.
Jordon Biondo

Câu trả lời:


7

Điều này sẽ cho bạn cơ hội dùng thử các bảng Org mà hầu như không có đường cong học tập. Đặt đoạn mã sau vào tệp init của bạn và chạy nó:

(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)

Bây giờ, từ tệp TSV, bạn có thể nhấn C-c |và bảng của bạn sẽ được chuyển đổi thành bảng Org. (Với C-u C-c |nó cũng sẽ hoạt động với tệp CSV.) Khi bạn hoàn tất chỉnh sửa bảng Org, nhấn C-x C-svà bảng Org sẽ được chuyển đổi trở lại TSV và lưu lại vào tệp gốc.


Điều này hoạt động rất tốt cho các bàn nhỏ. Tuy nhiên, có thể do cách org-modexử lý các bảng, mọi thứ bắt đầu bị chậm, phản hồi chậm khi các bảng có khoảng 1000 hàng và 10 cột cho trường hợp của tôi.
biocyberman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.