Rscript 有 Emacs 模式吗?

Posted

技术标签:

【中文标题】Rscript 有 Emacs 模式吗?【英文标题】:Is there an Emacs mode for Rscript? 【发布时间】:2010-11-09 14:33:13 【问题描述】:

Rscript 有没有可用的 emacs 模式?

Rscript 是R 语言的脚本前端。)

如果我输入这个:

#!/usr/bin/Rscript
print(commandArgs(TRUE))

并在ESS R 模式下执行indent,它会疯狂缩进第一行,因为它会将其视为注释:

                          #!/usr/bin/Rscript
print(commandArgs(TRUE))

【问题讨论】:

【参考方案1】:

试试shell-script-mode - 一些notes on customized indentation

它缩进你的代码就好了,对我来说。

【讨论】:

路过投反对票有什么原因吗?正如我所说,我所链接的内容纠正了 OP 抱怨的不良缩进;如果这没有帮助,请忽略。如果错误或有害,请投反对票 - 但请大家礼貌地解释为什么它是错误的。【参考方案2】:

没有,但您可以通过使文件的第二行如下所示来强制您的 Rscript 进入 R 编辑模式:

# -*- mode: R -*-

(更多信息here。)

【讨论】:

另外,如果你结束它们 .R(我对普通 R 文件的选择)或 .r(我对 littler 或 Rscript 'scripts'的选择),模式往往会自动分配给。【参考方案3】:

从 5.9 版开始,ESS 将使用 Rscript 或 litter 解释器识别脚本;见http://ess.r-project.org/Manual/ess.html#New-features。

作为参考,要将模式分配给解释器,请使用interpreter-mode-alist 变量。例如,

(add-to-list 'interpreter-mode-alist '("Rscript" . r-mode))

任何第一行如“#!/usr/bin/Rscript”的文件都将被识别为 r-mode。

【讨论】:

【参考方案4】:

如果您只想注释掉一行,请使用“##”而不是“#”。 Double # 会将线放在正确的位置。

【讨论】:

是的,知道的很有用。但是,在这种情况下,第一行需要以#! 开头,以告诉shell 它是什么类型的脚本。

以上是关于Rscript 有 Emacs 模式吗?的主要内容,如果未能解决你的问题,请参考以下文章

您可以在emacs的邪恶模式下使用vim脚本和插件吗?邪恶模式的局限性是什么?

如何为新语言编写 emacs 模式?

emacs lisp,如何获得缓冲区主要模式?

Emacs中的样式组件模式?

Emacs 中的长线模式

我应该在我的 Emacs Lisp 包中的哪里添加自动加载 cookie?有明确的指南吗?