如何将以下键绑定添加到我的Emacs init.el中?

时间:2017-04-28 06:12:58

标签: emacs clojure

我正在学习Clojure。每天,我打开Emacs并输入以下命令:

C-x 3 ; create a new window on the right
M-x cider-jack-in ; open up a REPL
C-x o ; switch to my left window
C-x C-f code/clojure-projects/something.clj ; open up a file and start coding

我想自动执行这些任务,以便每次Emacs启动时它们都会自动发生。

为此,我需要在~/.emacs.d/init.el文件的底部添加内容,对吗?

我也想知道将来我可以弄清楚如何做这些事情的过程。

2 个答案:

答案 0 :(得分:3)

您可以使用键盘宏。

您的想法是记录您的行为并为行动命名。 Emacs将为您生成代码,您只需设置密钥映射。

首先,您需要开始按C-x (<f3>录制宏并执行命令,直到完成C-x )<f4>以结束宏录制会话

现在您将拥有一个未命名的宏,您可以通过C-x e<f5>来测试它,它将执行所有录制的命令。

现在,您可以按M-x name-last-kbd-macro命名宏。之后,转到init.el,然后执行M-x insert-kbd-macro,这将为您粘贴(fset <macro-name> <your-macro-definition>),现在即使您打开新的emacs会话,也可以使用M-x <macro-name>来调用您的宏

如果您愿意,也可以设置键绑定。例如:

(global-set-key (kbd "C-c a") 'my-macro)

有关详细信息,请查看EmacsWiki: Keyboard Macros

答案 1 :(得分:3)

要让这些命令全部在clojure-mode启动时运行,请将以下内容添加到~/.emacs.d/init.el文件中:

(defun my-clojure-startup ()
  "Startup sequence for clojure-mode"
  (interactive)
  (split-window-horizontally)
  (cider-jack-in)
  (other-window)
  (find-file "/your/full/filepath.ext"))

将其绑定到某个键,例如CRTL + c a:

(global-set-key (kbd "C-c a") 'my-clojure-startup)

或者只要你以clojure模式开始就让它运行:

(add-hook 'clojure-mode-hook 'my-clojure-startup)

注意这是未经测试的,因为我没有clojure所以无法看到每个命令的完整行为,但这应该有希望至少给你一个提升。