(defun buffer-shimmy () "Back to the previous buffer" (interactive) (let ((buff (car (buffer-list)))) (message "Previous buffer: %s" buff) (switch-to-buffer (other-buffer buff)) ) ) (global-set-key (kbd "<C-tab>") 'buffer-shimmy) ;; or (define-key global-map [(control tab)] 'buffer-shimmy)
但是,当我使用“emacs -nw”(或者如果我在SSH会话中使用Emacs)打开Emacs时,它不起作用.
找到this link后 – 我想也许我想要的是不可能的?
显然,在终端中(即在窗口系统之外)向“TAB”的ASCII字符添加控制修饰符是没有意义的.然而,如果通过窗口系统,Emacs可以看到您按Ctrl TAB作为< tab>使用控制修饰符,可以在.emacs文件中表示为C-< tab>或< C-tab>或[(控制标签)].
是否有解决此问题的解决方法?
参考软件:使用gnome-terminal和默认配置文件在Ubuntu 9.04上的Emacs版本:22.2.1.
当emacs在窗口模式下运行时,它直接从按键接收其输入.当它在终端内运行时(或如果它会使事情变得更清楚,为什么它不起作用 – 在ssh连接上),输入来自终端I / O.终端程序读取硬件键事件,并生成输入流(不是非常准确,但突出显示问题). Emacs读取输入流并转换为按键事件.由于emacs无法访问硬件密钥事件,因此受终端环境的限制.
对于某些终端程序,可以在按CTRL-< Tab>时生成自定义输入序列(例如当您按F1时),然后可以将Emacs解释为CTRL-< Tab>.为CTRL-< Home>执行此操作的示例代码段是:
(when (not window-system) ; Fixup missing console keys (define-key key-translation-map (kbd "M-[ 4 ^") (kbd "C-<end>")) (define-key key-translation-map (kbd "M-[ 1 ^") (kbd "C-<home>")))
在该示例中,M- [1]是当我按下CTRL-< Home>时生成的输入序列.在我的终端.
它不是一个非常便携的解决方案(我主要使用putty从windows访问我的linux盒子,它不允许它),所以你的里程可能会有所不同.
最后,我决定在我的.emacs上使用另一个键绑定,并让CTRL-< TAB>的肌肉记忆.死了.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。