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