2

出于某种原因,“Cz”被映射到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

4 回答 4

3

尝试评估这个:

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

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

我用 Ch b 找出要修改的 *-map 。

于 2010-09-02T16:06:40.190 回答
3

我的 .emacs 中有以下代码:

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

它将启动一个 eshell,并且可以正常工作。

Cz 组合在 Unix/Linux 上是相当标准的,如果您在终端中使用例如 vi、lynx 或 mutt 并按下 Cz,程序将暂停,您将返回 shell。发出“fg”命令将再次弹出程序。由于 Emacs 有自己的 shell,我喜欢在 Emacs 中按 Cz 时生成它。

您还可以添加以下钩子,它将在 eshell 中重新映射 Cz。这样,在 eshell 中按 Cz 即可让您回到正在编辑的缓冲区。

(add-hook 'eshell-mode-hook
  (lambda ()
    (local-set-key (kbd "C-z") 'bury-buffer)))
于 2010-09-05T08:32:06.193 回答
2

把它放在.xemacs/init.el 的末尾:

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

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

C-h k C-z看看 xemacs 是否真的收到了密钥C-z

于 2010-09-02T15:37:31.090 回答
1

我对 Cf 有同样的问题。我希望它映射到 isearch-forward,但它却一直向前移动一个字符。

我终于通过添加解决了我的问题

(global-unset-key [?\C-f])
(global-set-key [?\C-f] 'isearch-forward) 

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

这是我唯一要做的事情。

高温高压

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

于 2011-06-15T19:50:00.370 回答