我刚刚安装了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的新手,所以非常感谢这方面的任何帮助.
(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)上做帮助时看到的字符串.
默认情况下,Emacs仅允许将某些键作为前缀(多键命令的开始)。请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Prefix-Keys.html。 您需要创建一个键盘映射并将其绑定到Cp。