我刚刚安装了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)
但是,现在每当我尝试在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
现在,我是否需要将其添加到我的.emacs文件中以创建键映射?
当我将上述代码添加到.emacs并启动emacs时,我得到的错误是:
void-variable =>
这可能是什么问题?
您问题的明确答案是:
(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)
有关正在完成的操作的更多信息,请查看文档
define-prefix-command
keymaps
kbd
在原始帖子中,您混合使用kbd
和较旧的"\ Cp"表示法.您可以阅读这个讨论键绑定的大型教程,其中包含大量信息(超过您可能需要的信息).我发现kbd
用法是最简单的,你只需要传递你在密钥(C-h k)上做帮助时看到的字符串.
默认情况下,Emacs仅允许将某些键作为前缀(多键命令的开始)。请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Prefix-Keys.html。 您需要创建一个键盘映射并将其绑定到Cp。