ess-mode
是“Emacs说统计数据”。此模式对于编辑R或Splus(两个单独的统计包)的程序非常有用。
在我的缓冲区中,当我输入_
时,该字符将替换为<-
,这非常令人沮丧。是否有emacs lisp语句来关闭此行为?
emacs:22.1.1 ess-mode release(未知)
答案 0 :(得分:64)
来自ESS's manual(请参阅“5.2.0中的更改/新功能”):
ESS [S]:按下划线(“_”)一次插入“&lt; - ”(如前所述);按下划线两次插入一个文字下划线。要停止此智能行为,请在加载ess-site后将“(ess-toggle-underscore nil)”添加到.emacs
答案 1 :(得分:4)
由于该功能很有用。您可以将其分配给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)
答案 2 :(得分:3)
来自http://www.r-bloggers.com/a-small-customization-of-ess/和 How to change smart assign key ("_" to "<-") binding in ESS
将“:”分配给“&lt; - ”并停止分配下划线(下划线)“_”到“&lt; - ”将以下内容放在.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!
答案 3 :(得分:3)
A more recent version which seemed to work for me, and is a lot less verbose (you essentially keep normal underscores, but can set your own key for this smart behaviour!):
(global-set-key (kbd "C-;") (lambda () (interactive) (insert " <- ")))
(ess-toggle-underscore nil)
Insert your shortkey choice instead of C-;
.
答案 4 :(得分:0)
像MichałMarczyk和this R mailing list thread建议的那样,将此行添加到~/.emacs
:
(ess-toggle-underscore nil)
然后使用M-x load-file
重新加载并输入~/.emacs
。
但如果再次加载文件,例如如果添加另一个自定义,则将其切换回原始状态。因此,将其切换两次,第一次将其强制为默认值:
(ess-toggle-underscore t)
(ess-toggle-underscore nil)
话虽如此,我更喜欢Drummermean的解决方案,但如果将其添加到~/.emacs
并加载两次,它也会恢复为默认值。因此,在以下情况下强制切换到默认值:
(ess-toggle-underscore t)
(global-set-key (kbd "M--") (lambda () (interactive) (insert " <- ")))
(ess-toggle-underscore nil)
我将智能作业绑定到Opt-[minus]
,如RStudio
(在Mac上)。
答案 5 :(得分:0)
作为@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)))