emacs - 如何在不破坏标签的情况下使用 ctrl-i 作为 emacs 快捷方式

标签 emacs tabs keyboard-shortcuts

这个问题在这里已经有了答案:




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/

相关文章:

ios - Swift:为不同的选项卡设置不同的导航栏按钮

Python Tkinter 侧笔记本选项卡

javascript - emacs paredit - 如何删除引号

python - Emacs:在缓冲区评估期间将参数传递给劣质 Python shell

emacs - 以下解除绑定(bind)脚本有什么问题?

jquery - 如何为各个 JQuery 选项卡创建不同的键盘命令集?

javascript - 如何使用 javascript 触发谷歌翻译页面上的监听按钮?

git - VS Code 阶段更改快捷方式

delphi - 如何模拟 Alt+Shift 来更改 Windows 中的语言?

emacs - Emacs —如何创建垂直删除线效果