3

我已经成功使用了Ctrl+Shift+Up' Ctrl+Shift+down'

Ctrl+Shift+left'Ctrl+Shift+Right到不同的命令。但是当我

尝试使用Ctrl+s命令 save-buffer 和Ctrl+Shift+s,其中

相当于Ctrl+S,对于另一个命令,它有一些问题。

save-buffer 工作正常,但是当我输入时Ctrl+Shift+s,它会执行

命令保存缓冲区。我曾经Ctrl+q找到的控制序列

Ctrl+s并且Ctrl+Shift+S,我得到相同的结果,即^S

我希望我会得到^sCtrl+s但事实并非如此。

有人知道原因吗?

另一个问题是:我使用Ctrl+c命令killing-ring-save。在这个

在这种情况下,所有以开头的命令(数量很大)Ctrl+c现在都不起作用。

有没有办法Ctrl+c用另一个自定义前缀替换前缀?


我可能会向错误的方向提出我的问题。我ctrl+c用作

杀戮环保存。它在 emacs 中运行良好(无模式)。但是如果我打开一个 .c 文件(C 模式),那么

当我键入时Ctrl+c,它会等待我键入另一个键。我认为在这种情况下,

ctrl+c被视为前缀。在这种情况下,我需要进行以下修改:

使用自定义的前缀,Ctrl+a比如Ctrl+c; 去除那个

前缀Ctrl+c; 用作杀戮Ctrl+c 环保存。

我将以下内容添加到我的 ~/.emacs 中:

(global-set-key (kbd "Ca") mode-specific-map)

(global-set-key (kbd "Cc") 'kill-ring-save)

(global-set-key (kbd "Cf") 'isearch-forward)

(global-set-key (kbd "Cv") 'yank)

(global-set-key (kbd "Cs") 'save-buffer)

(defun my-c-initialization-hook ()

(define-key c-mode-base-map (kbd "Ca") mode-specific-map)

(define-key c-mode-base-map (kbd "Cc") 'kill-ring-save))

(add-hook 'c-initialization-hook 'my-c-initialization-hook)

但这不起作用。Ctrl+c仍然被视为前缀,所以我不能使用它

作为杀死环保存。此外,如果我输入Ctrl+a Ctrl+c,它说它不是

定义。(我认为它会与我输入的结果相同Ctrl+c Ctrl+c

4

3 回答 3

3

绑定很棘手,CUA 模式很好地解决了这个C-c问题,只有在你标记了一个区域时才让它执行 kill-ring-save。

于 2011-01-12T12:00:14.057 回答
1

首先,Control-S 是一个 ASCII 控制字符——^s并且^S是同一个字符。

但是,键与字符不同,如果您使用 Emacs 和窗口管理器,那么您可以区分键C-sC-S-s. 后者是 Control-Shift-s。

您遇到的问题是,如果您没有显式绑定字母键的移位版本,则移位后的字母键使用未移位键的绑定。这是一个“功能”。

所以你需要同时绑定C-sC-S-s

(global-set-key (kbd "C-s") 'save-buffer)
(global-set-key (kbd "C-S-s") 'another-command)
于 2011-08-20T17:50:09.380 回答
0

如果您在终端中运行 emacs,则 shift-ctl-c 问题的原因可能是终端驱动程序。在这种情况下,给出 command stty stop undef,然后再次运行 emacs,看看它是否会影响问题。另外,看看你是否对 shift-ctl-其他字母有同样的问题

于 2011-01-12T10:00:46.287 回答