我一直在搜索没有找到一段时间的模式,这使得编辑巨大的制表符/逗号/冒号分隔文件很容易。我一直想要一种模式,确保列始终排列,就像组织模式表一样。我知道我可以轻松地将整个文件转换为组织模式表,然后在我完成后将其关闭,但是对于大文件来说这会变得非常慢,并且对于快速编辑很麻烦(还有发生的问题)如果一个字段包含一个垂直条)。那么有没有人知道我可以使用的模式或内置函数/变量,以便我可以得到像
这样的文件col1\tcol2\tcol3
very long column1\tcol2\tcol3
显示为
col1 col2 col3
very long column1 col2 col3
? (可能在隔板上涂上一些颜色)
答案 0 :(得分:10)
也许您可以告诉我们您已找到并拒绝了哪些内容?
如果您一直在搜索,那么您肯定已经看过http://emacswiki.org/emacs/CsvMode了吗?你没有提到它,或者说为什么它没有任何好处。
SES(Simple Emacs Spreadsheet)可能是一种有用的方法:
C-h i g (ses)
RET
您可以创建一个ses-mode
缓冲区并将制表符分隔的数据放入其中(这是导入机制)。
答案 1 :(得分:10)
答案 2 :(得分:2)
有漂亮的column.el,我多年前在gnu.emacs.sources 组中发现的(它是在1999 年添加的)。该群组现已被谷歌屏蔽。我只是在 Org 模式阻塞的约 5000 行制表符分隔文本文件上使用了 pretty-column.el(出于这个原因,Org 模式在转换此类文件时有 999 行限制)。 在编辑中添加:这似乎现在被称为 delim-col.el(见 this Emacs Wiki entry);作者是同一个人。
答案 3 :(得分:0)
如@choroba所述,使用csv-mode
。具体回答您的问题:
确保您的分隔符位于csv-separators
中,例如您可以使用
(setq csv-separators '("," " "))
使用csv-align-fields
(默认键绑定C-c C-a
)将字段值排列为列。
@unhammer关于仅对齐可见线的评论很棒。他们的代码正确缩进了:
(add-hook 'csv-mode-hook
(lambda ()
(define-key csv-mode-map (kbd "C-c C-M-a")
(defun csv-align-visible (&optional arg)
"Align visible fields"
(interactive "P")
(csv-align-fields nil (window-start) (window-end))
)
)
)
)