如何让Cp成为Devel :: PerlySense的Emacs前缀键?

10 emacs perl

我刚刚安装了Devel :: PerlySense 0.0180.

我在我的.emacs文件中添加了以下内容:

 ; PerlySense
 (load "~/perly-sense")

 (global-unset-key "\C-p")

 (global-set-key (kbd "\C-p \C-d") 'perly-sense-smart-docs-at-point)

 (global-set-key (kbd "\C-p \C-g") 'perly-sense-smart-go-to-at-point)
Run Code Online (Sandbox Code Playgroud)

但是,现在每当我尝试在emacs中加载Perl文件时,我都会在加载之前收到以下错误:

错误"键序列Cp mf以非前缀键Cp开头"

我该如何解决这个问题?我是emacs的新手,所以非常感谢这方面的任何帮助.

更新:

ysth提交链接建议,执行以下操作:

 (use-local-map (make-sparse-keymap))
     => nil
 (local-set-key "\C-p" ctl-x-map)
     => nil
 (key-binding "\C-p\C-f")
     => find-file

 (key-binding "\C-p6")
     => nil
Run Code Online (Sandbox Code Playgroud)

现在,我是否需要将其添加到我的.emacs文件中以创建键映射?

当我将上述代码添加到.emacs并启动emacs时,我得到的错误是:

void-variable =>

这可能是什么问题?

Tre*_*son 25

您问题的明确答案是:

(define-prefix-command 'perly-sense-map)
(global-set-key (kbd "C-p") 'perly-sense-map)
(define-key perly-sense-map (kbd "C-d") 'perly-sense-smart-docs-at-point)
(define-key perly-sense-map (kbd "C-g") 'perly-sense-smart-go-to-at-point)
Run Code Online (Sandbox Code Playgroud)

有关正在完成的操作的更多信息,请查看文档

在原始帖子中,您混合使用kbd和较旧的"\ Cp"表示法.您可以阅读这个讨论键绑定的大型教程,其中包含大量信息(超过您可能需要的信息).我发现kbd用法是最简单的,你只需要传递你在密钥(C-h k)上做帮助时看到的字符串.


yst*_*sth 5

默认情况下,Emacs仅允许将某些键作为前缀(多键命令的开始)。请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Prefix-Keys.html。 您需要创建一个键盘映射并将其绑定到Cp。