我可以在 Emacs 23 中为当前缓冲区设置字段分隔符吗?
答案1
当然可以——尽管默认情况下,您只能全局执行此操作。为此,请自定义变量csv-separators
(M-x customize-variable RET csv-separators RET
)并将您选择的分隔符添加到列表中。(请参阅C-h v csv-separators RET
/M-x describe-variable RET csv-separators RET
以获取有关变量的文档,包括一些值得了解的注意事项,如果您要更改其值。)
如果您确实需要将更改仅应用于给定缓冲区,则可以尝试通过make-local-variable
(例如M-: (make-local-variable 'csv-separators) RET
)使变量成为缓冲区局部变量,然后直接设置当前缓冲区的值(例如M-: (setq csv-separators (append '(":") csv-separators))
)。但请注意:我还没有尝试过这个,不知道它是否会起作用。
答案2
这扩展了已接受的答案。我本来会在那里发表评论,但需要超过 50 个代表才能做到这一点。我刚刚发现了这个,但这种make-local-variable
方法对我来说不起作用。我找到了变量csv-separator-chars
,它的文档说
Set by customizing ‘csv-separators’ -- do not set directly!
因此,使用customize-variable
oncsv-separators
对我来说是有效的,因为这也设置了,csv-separator-chars
这似乎是对齐 CSV 时真正使用的。
答案3
接受的答案对我来说也不起作用:虽然检查csv-separators
表明它的值是局部的,但似乎没有效果。
但是由于2022 年 5 月(我认为对应于 csv-mode-1.20)有一个专用函数:
Add CSV separator guessing functionality
Add two new commands: `csv-guess-set-separator' that automatically
guesses and sets the CSV separator of the current buffer, and
`csv-set-separator' for setting it manually.
`csv-guess-set-separator' can be useful to add to the mode hook to
have CSV mode guess and set the separator automatically when visiting
a buffer:
(add-hook 'csv-mode-hook 'csv-guess-set-separator)