2011-01-12 97 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)