TAB使用ESS模式时,有许多有用的变量可控制Emacs(R)代码块中的键缩进和完成。
ess-tab-complete-in-script
首先缩进行,如果没有缩进,则自动补全单词。
“功能强大,责任重大”,因此,当快速缩进代码时,您可能最终完成代码而没有注意到灾难性的结果。因此,您可以使用变量优化内容ess-first-tab-never-complete
。例如:if 'unless-eol
,TAB仅在光标位于行尾时才完成;如果是'symbol
,它也会在一行的中间完成,但是如果您在一个单词的中间则不会完成;等等(有关更多信息,请阅读doc F1vess-first-tab-never-complete
)。
问题是,至少对于我来说,该TAB绑定到ess-noweb-indent-line
,但是控制缩进或完全行为的命令是:ess-indent-or-complete
。因此,我使用以下方式修复了选项卡绑定:
(add-hook 'ess-mode-hook
'(lambda()
(local-set-key (kbd "<tab>") 'ess-indent-or-complete)
))
这可行,但是我不知道这是否是正确的方法。在手册中,我看不到任何提示,请转至ESS模式并重置选项卡绑定。
您知道哪种方法可以执行此操作吗?
有两种合理的方法可以为特定模式设置Tab键(或任何键)。通过模式挂钩在本地设置密钥,您在答案中提到的第一个。但是请注意,通常最好使用命名函数而不是a,lambda
这样以后您就可以删除钩子了:
(defun ess-keys-hook ()
"Put a bunch of keybindings in here."
(local-set-key [tab] 'ess-indent-or-complete))
(add-hook 'ess-mode-hook 'ess-keys-hook)
另一个选择是在相关的模式图中定义键,您可以这样操作:
(define-key ess-mode-map [tab] 'ess-indent-or-complete)
两种方法都相当常用,尽管我更喜欢后者,因为它使我更干净,更高效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句