无法在xemacs中重新绑定密钥C-z

时间:2010-09-02 15:11:42

标签: xemacs

出于某种原因,“C-z”被映射到suspend-or-iconify-emacs,我似乎无法将其重新绑定到不那么烦人的东西上。 (我喜欢使用ctrl-z进行撤消,但不做任何事情至少比每次我不小心碰到钥匙都要暂停一样)

我尝试过互动式: M-x global-set-key,然后是Set key C-z to command: undo M-x describe-key-briefly给了我C-z runs the command suspend-or-iconify-emacs

我试过去临时缓冲区并评估: (global-set-key (kbd "C-z") 'undo)(global-set-key "\C-z" 'undo),它当然位于我的.xemacs / init.el文件中。

似乎实际上没有重新绑定密钥。

这是在XEmacs 21.5上以基本模式发生的。关于如何排除故障的任何想法?

编辑:好的,这是一个通过重新定义暂停函数来解决问题的黑客攻击:

(defun suspend-or-iconify-emacs () (interactive) (undo))

我实际上不能暂停emacs了,但这对我来说确实没问题。

4 个答案:

答案 0 :(得分:3)

尝试评估一下:

(define-key global-window-system-map [(control z)] 'undo)

(假设您没有在tty模式下运行XEmacs,但我猜您不是,如果您想要图标化: - )

我使用C-h b来找出要修改的* -map。

答案 1 :(得分:3)

我的.emacs中有以下代码:

(global-set-key (kbd "C-z") 'eshell)

它将启动一个eshell,它可以工作。

如果您在终端中工作,那么C-z组合在Unix / Linux上非常标准。 vi,lynx或mutt并按下C-z,程序将暂停,你将回到shell中。发出'fg'命令会再次弹回程序。由于Emacs有自己的shell,我喜欢在Emacs中按C-z时产生。

您还可以添加以下钩子,它将在eshell中重新映射C-z。这样就可以在eshell中按下C-z,然后返回到你正在编辑的缓冲区。

(add-hook 'eshell-mode-hook
  (lambda ()
    (local-set-key (kbd "C-z") 'bury-buffer)))

答案 2 :(得分:2)

放在.xemacs / init.el的最后

(global-set-key (kbd "C-z") 'undo)

或者您的键盘或操作系统配置错误。

执行 C-h k C-z 以查看xemacs是否真的收到 C-z 键。

答案 3 :(得分:1)

我和C-f有同样的问题。我希望它映射到isearch-forward,但它不断向前移动一个角色。

我终于通过添加

解决了我的问题
(global-unset-key [?\C-f])
(global-set-key [?\C-f] 'isearch-forward) 

显然问题是Cf(和Cz)是一个“真正的”键,也就是说,它是终端识别的东西(它是ASCII 0x06,Cz为0x1a),所以你需要前面的“?\” “CF”。

这是我唯一能做的事情。

HTH

(编辑:我应该注意我使用的是emacs,而不是xemacs)