【问题标题】:hotkey for editing init.el / .emacs用于编辑 init.el / .emacs 的热键
【发布时间】:2014-04-02 15:33:30
【问题描述】:

我是 lisp 的血腥初学者,所以请多多包涵。

我认为最好的精益方法是潜入。因为我正在设置我的 Emacs 环境,所以我会经常编辑我的init.el,我想添加一个热键来快速找到它以进行编辑,因为我在接下来的几周内会经常需要它。

我试过了:

(global-set-key [f7] '(find-file "~/.emacs.d/init.el"))

无济于事,下次按下时的答案是:

Wrong type argument: commandp, (find-file "~/.emacs.d/init.el")

我还尝试将它放入一个自己的函数中,模仿一个工作热键(用于 deft (global-set-key [f8] 'deft)):

(defun sz-init-el ()
  (interactive)
  (find-file "~/.emacs.d/init.el"))
(global-set-key [f7] 'sz-init-el)

那行得通。所以我尝试在我的第一次试用中添加(interactive)

(global-set-key [f7] '((interactive) (find-file "~/.emacs.d/init.el")))

但这行不通(再次:Wrong type argument: commandp, ...)。

那么,有没有办法在不先定义函数/命令的情况下设置全局键绑定?还是必须绕道defun

感谢您的帮助和回答!

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    您需要使用 lambda(又名匿名函数):

    (global-set-key [f7] (lambda () (interactive) (find-file user-init-file)))
    

    此外,使用变量user-init-file 优于硬编码名称。

    【讨论】:

    • 谢谢,有道理(我知道来自 python 的 lambdas)。 -- 特别感谢user-init-file 指针!
    • 对 lispers 说“我知道来自 python 的 lambdas”就像对海鸥说“我知道来自企鹅的翅膀”。 :-)
    • @sds:我的意思是我对匿名函数有基本的了解,虽然不一定立即清楚为什么需要它(没有更好地了解 elisp 的语法),但我理解语法和不需要进一步说明什么是 lambda。但我明白你的意思。
    • 仅供参考,最好引用 lambda 表达式。见stackoverflow.com/questions/20948325/why-not-quoting-lambda
    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2016-05-23
    • 2011-04-07
    相关资源
    最近更新 更多