如何在不中断选项卡的情况下对emacs快捷方式使用ctrl-i
可能重复:如何在不中断选项卡的情况下对emacs快捷方式使用ctrl-i,emacs,tabs,keyboard-shortcuts,Emacs,Tabs,Keyboard Shortcuts,可能重复: 我想将emacs键盘快捷键控件-I重新定义为“向上移动光标” 为此,我在.emacs文件中添加了以下行: (global-set-key (kbd "C-i") 'previous-line) 然后我发现,默认情况下,tab键执行与control-I绑定的任何操作,这显然不是我想要的。因此,为了恢复正常的选项卡行为,我将其添加到.emacs文件中 (global-set-key (kbd "<tab>") 'indent-for-tab-command) (tab命
我想将emacs键盘快捷键控件-I重新定义为“向上移动光标” 为此,我在.emacs文件中添加了以下行:
(global-set-key (kbd "C-i") 'previous-line)
然后我发现,默认情况下,tab键执行与control-I绑定的任何操作,这显然不是我想要的。因此,为了恢复正常的选项卡行为,我将其添加到.emacs文件中
(global-set-key (kbd "<tab>") 'indent-for-tab-command)
(tab命令的全局设置键(kbd“”)缩进)
这主要是有效的。但是,tab不再适用于自动完成迷你缓冲区中的命令。我怎样才能解决这个问题?还是有更好的办法?
谢谢。Control-i和TAB通常被认为是相同的(例如在终端中)。但是,Emacs有区别,允许单独绑定
看
您还可以使用(本地设置密钥绑定)
设置本地绑定您可以在
.emacs
中创建一个(交互式)
命令来设置本地绑定,并仅在感兴趣的缓冲区中调用该命令
编辑
示例:将其放入.emacs
或新的缓冲区中,然后执行M-x评估当前缓冲区
(defun mybinding ()
(interactive)
(local-set-key [tab]
'(lambda () (interactive)
(message "hello"))))
然后转到感兴趣的缓冲区和M-xmybinding
,然后按TAB键查看结果(“hello”应在迷你缓冲区中显示为消息)
尝试使用C-f打开一个新文件,然后按TAB键,其完成行为与平常相同。在此线程中使用帖子: 我找到了一个解决方案:
;; Translate the problematic keys to the function key Hyper,
;; then bind this to the desired ctrl-i behavior
(keyboard-translate ?\C-i ?\H-i)
(global-set-key [?\H-i] 'previous-line)
因此,如果我理解了您的建议,我想做的是只在本地缓冲区中重新绑定control-I和TAB键。这样在迷你缓冲区中,它们的默认绑定仍然适用。谢谢,这对我来说很有效,尽管下面的解决方案似乎也很有效,可能更简单?谢谢你指出这一点。我在那条线索中发现了一些在我的情况下似乎有效的东西。