mks*_*uth 3 emacs tabs keyboard-shortcuts
可能重复:
如何在不更改TAB的情况下将命令绑定到Ci?
我想重新定义emacs键盘快捷键控件 - 我是"移动游标"
为此,我将以下行添加到我的.emacs文件中:
(global-set-key (kbd "C-i") 'previous-line)
Run Code Online (Sandbox Code Playgroud)
然后我发现,默认情况下,tab键可以执行任何绑定到control-i的操作,这显然不是我想要的.因此,为了恢复正常的标签行为,我将其添加到我的.emacs文件中
(global-set-key (kbd "<tab>") 'indent-for-tab-command)
Run Code Online (Sandbox Code Playgroud)
这主要是有效的.但是,选项卡不再适用于迷你缓冲区中的自动完成命令.我该如何解决这个问题?或者有更好的方法来解决这个问题吗?谢谢.
Control-i并且TAB通常被认为是相同的(例如在终端中).但是,Emacs进行了区分并允许单独绑定.
参见Emacs TAB和Ci.
您还可以使用设置本地绑定(local-set-key key binding).
您可以在其中创建一个(interactive)命令.emacs来设置本地绑定,并仅在感兴趣的缓冲区中调用该命令.
编辑
示例:将其放入您的.emacs或新缓冲区中然后执行M-xeval-current-buffer
(defun mybinding ()
(interactive)
(local-set-key [tab]
'(lambda () (interactive)
(message "hello"))))
Run Code Online (Sandbox Code Playgroud)
然后转到感兴趣的缓冲区,M-xmybinding然后按TAB以查看结果("hello"应显示为迷你缓冲区中的消息).
尝试C-f打开一个新文件并按下TAB具有与往常相同的完成行为.