projectile绑定运行快捷键

我在 .dir-locals.el 中定了了一个test的cmd

((nil . (
         (projectile-project-test-cmd . "run-execute.sh")
         )))

现在可以按 SPC p T RET 来运行项目了,感觉按键还是太多了。

请问怎么实现 按CMD + R 来运行 run-execute.sh ?

谢谢!

一般来说 Command 键被识别为 Super, 你可以用

(define-key (kbd "s-r") 'your-map 'your-func)

来绑定给Cmd R(不需要按 shift)。

我尝试把

 (define-key projectile-mode-map (kbd "s-r") 'projectile-run-command)

放入 .dir-locals.el中不起作用。

尝试放入 .spacemacs中,报错。 (Spacemacs) Error in dotspacemacs/user-config: Symbol’s value as variable is void: projectile-mode-map

我现在尝试用

  (global-set-key (kbd "s-r") 'projectile-run-command)

放在 .spacemacs中。

CMD+R报错

command-execute: Wrong type argument: commandp, projectile-run-command

尴尬。没有讲明白。 这个配置要放在.spacemacs里。 第一个错误是因为没有在 projectile-mode-map 前加 ’ 符号。(有关lisp语法。) 第二个错误提示,你需要确认 projectile-run-command 这个函数确实存在并被加载。

:cry: 我这还是没有搞定。

还是非常感谢。:pray:

@LdBeth

我现在在.spacemacs中绑定了一个函数

   (global-set-key (kbd "s-e") (lambda ()
                                (interactive)
                                (if projectile-project-run-cmd
                                    (projectile-run-project 'projectile-project-run-cmd)
                                  )))


还有两个问题。

  1. 按了CMD+E之后,依然需要按下回车键。
  2. 我在lua-mode中绑定了CMD+Rlua-send-buffer用来方便测试lua代码, 但在一个工程下面,一般就应该调用projectile-run-project了。

当然,第二个问题不是什么大问题,我可以调整下快捷键。

不知道第一个问题是不是可以解决下?

我这里看projectile-run-project的文档是

Normally you’ll be prompted for a compilation command, unless variable `compilation-read-command’.

所以也许可以试试加个lua-mode-hook(setq compilation-read-command "some-cmd")

第二题好像该用projectile-project-p

  • 首先,在 .dir-locals.el 中运行代码应该使用 eval

    ((nil
      (eval message "foobar")
      ;; ...
      )
    
  • 其次,在 .dir-locals.el 中设置 global-set-key 是会影响全局的,不如放在 ~/.emacs.d/

    如果你即要使用 global-set-key,又要不影响全局,可以专门定制一个 mode,针对当前文件夹下的文件。