2011-01-12 98 views
3

我已经成功地使用按Ctrl + Shift +向上 '按Ctrl + Shift +向下'的emacs - 热键绑定问题

按Ctrl + Shift +左按Ctrl + Shift +右到不同的命令。但是,当我

试图使用CTRL + S到命令保存缓冲器和按Ctrl + Shift + S,其

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

保存缓冲工作正常,但是当我键入按Ctrl + Shift + S,它EXCUTE

命令保存缓冲。我用CTRL + Q找到

CTRL + SCTRL + SHIFT +的控制序列小号时,得到相同的结果,这是,2S

我希望我会得到^s对于Ctrl + s,但它没有。

任何人都知道原因?

另一个queston是:我使用Ctrl + c作为命令的杀戮戒指保存。在这种情况下,所有命令(其数量很大)以开头,现在Ctrl + c不起作用。

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


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

杀死戒指保存。它在emacs(无模式)下工作正常。但是,如果我打开一个.c文件(C模式),然后

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

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

使用自定义的前缀,说Ctrl + A键,因为按Ctrl + C;删除

前缀Ctrl + c;使用Ctrl + c作为杀死环保存。

我以下内容添加到我的〜/的.emacs:

(全球设置键(KBD “CA”)模式专用地图)

(全球设置键(KBD“ CC“)的 '杀环保存)

(全球设置键(KBD ”CF“)' ISEARCH进)

(全球设置键(KBD ”CV“)“抽出) (全局组密钥(kbd“Cs”)'保存缓冲区)

(defun定义MY-C-初始化挂机()

(定义键C-模式碱基地图(KBD “CA”)模式特定映射)

(限定密钥C-模式基础地图(大骨节病 “抄送”) '杀环保存))

(添加钩' C初始化钩“我-C初始化挂机)

但这不起作用。 按Ctrl + C仍然被视为一个前缀,所以我不能用它

为杀死环保存。此外,如果我键入Ctrl + a Ctrl + c,它表示它不是

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

+0

http://www.gnu.org/s/emacs/manual/html_node/elisp/Prefix-Keys.html – phimuemue 2011-01-12 08:28:03

回答

3

抄送结合是棘手的,CUA模式解决它,它只使它尽杀环保存,当你有一个区域标记。

0

如果您在终端中运行emacs,那么shift-ctl-c问题的原因可能是终端驱动程序。在这种情况下,请发出命令stty stop undef,然后再次运行emacs,并查看它是否会影响问题。另外,看看你得到同样的问题与移CTL- 其他字母

+0

不,这是行不通的。 shift-ctl-letters总是具有与ctl-letters相同的控制顺序。例如,shift-ctl-a和ctl-a都给我^ A,而不是^ a – user565739 2011-01-12 10:54:24

+0

在手册中找到:http://www.gnu.org/software/emacs/manual/html_node/emacs/Modifier-Keys .html#修饰键 - – user565739 2011-01-12 23:12:37

0

首先,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)