ess-mode
是“Emacs 会说统计数据”。此模式对于编辑 R 或 Splus(两个独立的统计数据包)的程序很有用。
在我的缓冲区中,每当我输入_
字符时,都会被替换为<-
,这非常令人沮丧。是否有一个 emacs lisp 语句来关闭这种行为?
emacs:22.1.1 ess-mode 版本(未知)
从ESS 的手册中(查看“5.2.0 中的更改/新功能”):
ESS[S]:按下下划线(“_”)一次插入“<-”(和以前一样);按两次下划线会插入文字下划线。要停止这种智能行为,请在加载 ess-site 后将“(ess-toggle-underscore nil)”添加到您的 .emacs
由于该功能很有用。您可以将其分配给您在 R 中较少使用的其他键,它将自动从下划线中取消分配。";"
我个人通过在 .emacs 文件中添加以下行来分配它。
(setq ess-smart-S-assign-key ";")
我的 emacs 版本是 Vincent Goulet 的 24.3 All-in-one 安装文件。(安装在 windows 7 上)
希望这可以帮助
编辑 在上面的 emacs 25.2 中不起作用,而是在 .emacs 文件中添加以下内容
(setq ess-smart-S-assign-key ";")
(ess-toggle-S-assign nil)
(ess-toggle-S-assign nil)
来自http://www.r-bloggers.com/a-small-customization-of-ess/和 How to change smart assignment key ("_" to "<-") binding in ESS
要将“:”分配给“<-”并停止将下划线(下划线)“_”分配给“<-”,请将以下内容放入.emacs(是的,重复的行是正确的)
(setq ess-smart-S-assign-key ":")
(ess-toggle-S-assign nil)
(ess-toggle-S-assign nil)
(ess-toggle-underscore nil) ; leave underscore key alone!
一个似乎对我有用的更新版本,并且不那么冗长(您基本上保持正常的下划线,但可以为这种智能行为设置自己的键!):
(global-set-key (kbd "C-;") (lambda () (interactive) (insert " <- ")))
(ess-toggle-underscore nil)
插入您的快捷键选择而不是C-;
.
像 Michał Marczyk 和这个 R 邮件列表线程建议的那样,将此行添加到~/.emacs
:
(ess-toggle-underscore nil)
然后重新加载它M-x load-file
并输入~/.emacs
.
但是,如果您再次加载该文件,例如,如果您添加另一个自定义项,那么它会将其切换回原始状态。所以切换它两次,第一次强制它为默认值:
(ess-toggle-underscore t)
(ess-toggle-underscore nil)
~/.emacs
话虽如此,我更喜欢 Drummermean 的解决方案,但如果您将其添加并加载两次,它也会恢复为默认值。所以在之前强制切换到默认值:
(ess-toggle-underscore t)
(global-set-key (kbd "M--") (lambda () (interactive) (insert " <- ")))
(ess-toggle-underscore nil)
我将智能分配绑定到Opt-[minus]
喜欢RStudio
(在 Mac 上)。
作为@mmorin 回答的后续行动。要以与 Rstudio 中相同的方式为赋值运算符设置键绑定,请在.emacs
文件中添加以下内容
(ess-toggle-underscore t)
(ess-toggle-underscore nil)
(define-key ess-mode-map (kbd "M--") (lambda () (interactive) (just-one-space 1) (insert "<-") (just-one-space 1)))
(define-key inferior-ess-mode-map (kbd "M--") (lambda () (interactive) (just-one-space 1) (insert "<-") (just-one-space 1)))