【问题标题】:How to override the keybindings for Emacs Org mode org-property-next-allowed-values and org-property-previous-allowed-value如何覆盖 Emacs Org 模式 org-property-next-allowed-values 和 org-property-previous-allowed-value 的键绑定
【发布时间】:2020-12-17 06:22:24
【问题描述】:

S-RIGHT 是 (org-property-next-allowed-values) 和 根据https://orgmode.org/manual/Property-Syntax.html,用于(org-property-previous-allowed-value)的 S-LEFT。这些键绑定用于循环浏览 TODO 关键字以及安排日期。

我想将键绑定分别更改为 C-RIGHT 和 C-LEFT,这样它们就不会干扰我的正常编辑。 (我使用 S-LEFT、S-RIGHT 进行文本选择)。

我尝试在我的 init.el 中添加以下行:

  • (define-key org-mode-map (kbd "<S-left>") nil)
  • (define-key org-mode-map (kbd "<S-right>") nil)

以上 2 行成功禁用了 2 个键绑定。

然后我添加了以下 2 行来重新映射键绑定:

  • (define-key org-mode-map (kbd "<C-left>") 'org-property-previous-allowed-value)
  • (define-key org-mode-map (kbd "<C-right>") 'org-property-next-allowed-values)

但是,emacs(我在 Mac 上使用 AquaEmacs)不能识别“org-property-previous-allowed-value”和“org-property-next-allowed-values”。

我想知道我在这里做错了什么? 谢谢

【问题讨论】:

  • 当你说... emacs doesn't recognize the "org-property-previous-allowed-value" ...时,你到底是什么意思?你试的时候有没有报错?没有错误,但它不起作用?你到底在哪里添加了那些define-key 电话?如果在您的 init 文件中,是否已经在该点加载了 Org 模式?顺便说一句,<S-right> 绑定到org-shiftright,它根据上下文做不同的事情(它只在属性线上调用org-property-next-allowed-value)。无论您选择使用什么键,如果您想保留所有功能,您可能希望将org-shiftright 绑定到它。
  • 应该是org-property-next-allowed-value BTW - 单数,而不是复数。

标签: emacs org-mode key-bindings


【解决方案1】:

<S-right> 默认绑定到org-shiftright,它会根据上下文执行不同的操作。如果您的光标位于某个属性上,它只会执行org-property-next-allowed-value

我不知道您为什么在重新绑定时遇到问题,因此我的评论要求澄清。但我认为您可能根本不想重新定义键。尝试添加

(setq org-support-shift-select 'always)

改为你的初始化文件。 org-support-shift-select 的文档字符串说(除其他事项外 - 如果您决定这样做,您应该这样做 C-h v org-support-shift-select RET 并阅读整个内容):

在 Emacs 23 中,当“shift-select-mode”打开时,移动光标键 开始选择一个区域,或放大以这种方式开始的区域。 在 Org 模式下,在特殊情况下,这些相同的键用于 其他目的,重要到足以与轮班选择竞争。 Org 试图通过支持“shift-select-mode”来平衡这些需求 在这些特殊上下文之外,受此变量的控制。

...

如果您将此变量设置为符号“always”,则键 在标题、属性行、项目行和 表格单元格,以便在那里进行班次选择。如果这是 你想要什么,你可以使用以下替代命令: ‘C-c C-t’ 和 ‘C-c ,’ 改变 TODO 状态和优先级, ‘C-u C-u C-c C-t’可以用来切换TODO集, 'C-c -' 循环项目项目符号类型, 并且属性可以手动或在列视图中编辑。

但是,当光标位于时间戳上时,shift-cursor 命令 仍然会编辑时间戳 - 这太好了,不能放弃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多