这个问题在这里已经有了答案:
11年前关闭。
Possible Duplicate:
How do I bind a command to C-i without changing TAB?
我想将 emacs 键盘快捷键 control-i 重新定义为“向上移动光标”
为此,我在 .emacs 文件中添加了以下行:
(global-set-key (kbd "C-i") 'previous-line)
然后我发现tab键默认执行绑定(bind)到control-i的任何操作,这显然不是我想要的。因此,为了恢复正常的选项卡行为,我将其添加到我的 .emacs 文件中
(global-set-key (kbd "<tab>") 'indent-for-tab-command)
这主要是有效的。但是,选项卡不再适用于迷你缓冲区中的自动完成命令。我该如何解决?或者有没有更好的方法来解决这个问题?
谢谢。
最佳答案
Control-i 和 TAB 通常被认为是相同的(例如在终端中)。然而,Emacs 做出了区分并允许单独的绑定(bind)。
见 Emacs TAB and C-i .
您还可以使用 (local-set-key key binding)
设置本地绑定(bind).
您可以创建一个 (interactive)
您的 .emacs
中的命令这将设置本地绑定(bind),并仅在感兴趣的缓冲区中调用该命令。
编辑
示例:将其放入您的 .emacs
, 或在新缓冲区中然后执行 M-x eval-current-buffer
(defun mybinding ()
(interactive)
(local-set-key [tab]
'(lambda () (interactive)
(message "hello"))))
然后转到感兴趣的缓冲区和 M-x
mybinding
然后按 TAB 键查看结果(“hello”应在 minibuffer 中显示为消息)。尝试 C-f 打开一个新文件并按 TAB 键,它与往常具有相同的完成行为。
关于emacs - 如何在不破坏标签的情况下使用 ctrl-i 作为 emacs 快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512075/