定义控件Shift-*Emacs键盘快捷键

定义控件Shift-*Emacs键盘快捷键,emacs,keyboard-shortcuts,Emacs,Keyboard Shortcuts,我试图在Emacs中定义以下两个在窗口之间移动的键盘快捷键: C-shift-n:移动到下一个窗口 C-shift-b:移动到上一个窗口 我原以为下面的方法可以做到,但事实并非如此 (defun select-next-window ()

我试图在Emacs中定义以下两个在窗口之间移动的键盘快捷键:

  • C-shift-n:
    移动到下一个窗口
  • C-shift-b:
    移动到上一个窗口
我原以为下面的方法可以做到,但事实并非如此

(defun select-next-window ()                                                                                                                                                                                                                                                                                               
  "Switch to the next window"                                                                                                                                                                                                                                                                                              
  (interactive)                                                                                                                                                                                                                                               
  (select-window (next-window)))                                                          

(defun select-previous-window ()                                                                                                                                                                                                                                                                                     
  "Switch to the previous window"                                                                                                                                                                                                                                                                                  
  (interactive)                                                                                                                                                                                                                                                                                              
  (select-window (previous-window)))        

(global-set-key (kbd "C-<S-n>") 'select-next-window)                                                                                                                                                                                                                                                                    
(global-set-key (kbd "C-<S-p>") 'select-previous-window)
(取消选择下一个窗口()
“切换到下一个窗口”
(互动)
(选择窗口(下一个窗口)))
(取消选择上一个窗口()
“切换到上一个窗口”
(互动)
(选择窗口(上一个窗口)))
(全局设置键(kbd“C-”)选择下一个窗口)
(全局设置键(kbd“C-”)选择上一个窗口)
问题似乎在于最后两行定义了切换窗口功能的实际键盘快捷键(如果我使用更简单的键盘快捷键而不是
Control Shift-*
,它会起作用)


那么,我如何使用
kbd
来定义
Control-Shift-n
Control-Shift-p

假设您从不使用大写锁定,下面是一个超级简单的解决方案:

(global-set-key (kbd "C-N") 'select-next-window)

(全局设置键(kbd“C-”)选择下一个窗口)

问题是,当你按下shift键时,你发送的是大写字母N。

对不起,我才意识到为什么。我在Terminator中运行Emacs,它显然捕获了
C-S-N
C-S-P
。谢谢你有带锁的帽子吗?我现在正在运行第一个。@为什么它返回emacs的内部表示形式,不管您给它什么键字符串。所以(kbd“C-N”)返回^N。您可以通过点击
Control-hf
kbd
找到它。通常,使用
C-hk
找出Emacs是如何引用给定的键组合的,然后将精确的字符串传递到
(kbd)
。还有其他指定键的方法,但我认为这种对称性使
kbd
成为最佳选择。
(global-set-key (kbd "C-<S-N>") 'select-next-window)