【问题标题】:Is there a way to make alt-f and alt-b jump word forward and backward instead of printing ƒ and ∫ on Mac?有没有办法让 alt-f 和 alt-b 向前和向后跳转单词,而不是在 Mac 上打印 ƒ 和 ∫?
【发布时间】:2013-12-07 10:59:25
【问题描述】:

我了解 Mac 默认启用了一些 Emacs 键绑定(例如 Ctrl+A 移动到行首等)。例如,如果我打开 TextEdit,我可以像在 Emacs 中一样导航。

但是当我尝试 Alt+FAlt+b 移动到下一个单词或最后一个单词这是行不通的。它会打印出ƒ

有没有办法代替跳转单词?

我认为我没有修改键绑定,而是在德语键盘上使用美式布局。

【问题讨论】:

  • 澄清一下,您不是在谈论 Emacs 本身的问题,对吗?
  • 不,我的 Emacs 设置很棒 :) 我特别在谈论其他应用程序,如 firefox、chrome、textedit 等。
  • 这些都不适合我。起作用的是[对此SO问题的选择答案] [1]。 [1]:stackoverflow.com/questions/21937061/…
  • Ctrl+Alt+F/B 将起作用。 (至少 10.15.6)

标签: macos emacs key-bindings


【解决方案1】:

如果您想为终端重新启用它们

终端 -> 首选项 -> 键盘

勾选“使用选项作为元键”

【讨论】:

  • 这很干净,很棒!
  • 是的。节省了一天。谢谢。
  • 谢谢,这应该是国际海事组织接受的答案。我在终端偏好设置上也发现了很多不错的配置,我认为不需要安装 iTerm 或第三方终端。
【解决方案2】:

我的iTerm2版本是3.1.6,配置文件->键->设置Esc+

【讨论】:

  • 在我的 mac (BigSur) 上,在键盘选项卡上,现在有一个“使用选项作为元键”选项来执行此操作。请参阅上面的答案(stackoverflow.com/a/31766001/4058526)。
【解决方案3】:

也许其中之一有帮助? (我自己不使用 OSX,所以我无法测试任何东西)。

第一个 URL 的摘要:

使用以下内容创建文件~/Library/Keybindings/DefaultKeyBinding.dict 并重新启动所有应用程序。

{ "~d" = "deleteWordForward:"; "^w" = "deleteWordBackward:"; "~f" = "moveWordForward:"; "~b" = "moveWordBackward:"; }

【讨论】:

  • 我在这里找到了一个包含更多绑定的准备好的文件:github.com/fkchang/emacs-keybindings-in-osx
  • @amdev,也许新版本的 OSX 已经改变了这种行为。如果另一个答案对你有用,也许你可以添加一个额外的评论,指出你正在使用哪个版本的 OSX,并指出对你有用的解决方案。
  • 我使用 High Sierra 10.13.2
  • 看来Xcode只适用于moveWordBackward和deleteWordForward,我也在用High Sierra
  • 这对我在终端之外非常有用。在终端内我已经配置了这种行为,但如果你也想要它,也许你必须单独配置它(如其他答案中所述)。
【解决方案4】:

如果您谈论的是键(在 OS X 上的不同应用程序中)或特别是 Emacs,我有点困惑。在 OS X 上,用于在单词之间跳转的标准键是:

option/alt + 左箭头右箭头

如果它特定于 Emacs for OS X:

对于 Terminal.app,从 Snow Leopard 开始:转到 Preferences > Settings > Keyboard > Use option as meta key。

对于 iTerm:转到管理配置文件 > 键盘配置文件 >(您的配置文件)> 选项键为…

如果您想对国际字符和国际字符都使用 Option 键 Meta key 在 Emacs 中,请参阅下面的信息了解 iTerm 0.10.x 补丁和/或二进制文件。

用于按单词导航的 Alt-b 和 Alt-f 现在也适用于您的 shell。


更新: 提供补丁的原始网站链接不再在线,但我能够从archive.org检索缓存信息

OSX + terminal + Meta key + national characters

相当混合,对吧?如果您是其中一种键盘布局的用户,这些键盘布局在选项键快捷键下隐藏了一些非 ISO1 字符,并且您使用命令行 - 请继续阅读,我可能会为您服务。

就目前而言,如果您是 OSX 用户,并且希望将 Option (Alt) 键用于国家字符和 Meta-* 快捷方式,那么您会遇到一个令人不快的惊喜 - 您可以不。这是其中之一:iTerm 和 Terminal.app 都允许您在 Option 键角色之间切换,但它们都不允许您同时使用 Option。在 Linux 下,习惯上使用左 Alt 表示 Meta-*,右 Alt 表示您可能需要的任何国家字符。 Windows 也是如此。当然,你可以训练自己以前缀方式使用 ESC 键,但这避免了真正的问题。

对这种情况感到恼火,并且面对一些 Emacs 的使用,我决定利用 iTerm 是开源软件这一事实,看看我是否可以做一个微小的改变,以满足我的需求.果然,大约 25 分钟后,我得到了一个小补丁:只是更改了 iTerm 用于检测选项键被按下的掩码。花了几个小时和 5 章的 Cocoa 书,将其变成 iTerm 的键盘配置文件部分的成熟选项。这是我第一次涉足 Objective C 领域;虽然我赢了回来,但我不认为自己在不久的将来会在 Objective C 中写出更大的东西。

这是肉:https://sourceforge.net/p/iterm/patches/44/

  • “正确的选项是正常的”补丁;
  • 完整补丁允许您选择哪些键应被视为 Meta(两者,仅左,仅右);

补丁是针对 0.10.x 分支制作的,在修订版中 1871.

获得二进制文件后,启动它并转到书签 > 管理配置文件 > 键盘配置文件。如果您选择键盘配置文件,您应该会在键绑定列表底部看到一个新的下拉菜单。

这些选项应该是不言自明的。上面显示的配置是我正在使用的配置——这样我用左 Option 键获得所有 Meta-* 快捷方式,用右 Option 键获得所有波兰语字符。它应该是这样的™:)

我还没有收到 iTerm 作者的消息,所以我不知道这个补丁是否会合并到上游。我已经使用我的补丁版本将近一个半星期了,没有什么大的爆炸。是的,iTerm 在较大的终端(例如 130×80)上重绘屏幕的速度较慢,但​​有某些功能(如 256 色支持)可以弥补这一点。

更多信息:http://www.emacswiki.org/emacs/EmacsForMacOS

【讨论】:

  • “使用选项作为元键”意味着无法使用 Alt+3 键入井号 (#) 字符,如果在 Bash 脚本或类似脚本中键入 cmets,这会很烦人。
  • 我只是在尝试这个时得到 ?'s。使用 I-term
  • 您发布的网站不再可用。
【解决方案5】:

在 iTerm2 3.0.15 上,转到:

Preferences -> Default -> Keys tab ->"Left option() key acts as:" 

并将值更改为:

+Esc

【讨论】:

    【解决方案6】:

    在操作系统级别解决了这个问题,如下所示,

    ⟶ 系统偏好
    ⟶ 键盘
    ⟶ 输入源选项卡
    +在左下角
    ⟶ 左侧面板中的Others
    ⟶ 在右侧面板中添加并选择Unicode Hex Input

     ✓  Mac 不再在 alt+letter|number 上打印任何内容
    ✓  通过alt+[code]输入Unicode字符
    操作系统不抓取alt 快捷键!

    【讨论】:

    • @Arg 很高兴它有帮助。如果这对您有用,您可以为答案投票,以便其他用户可以看到它有帮助。
    • 我真的很喜欢 7 年后这仍然是一个活跃的问题!我个人对这个解决方案并不满意(我喜欢一些 alt+字母/数字组合,例如向元音添加变音符号(例如 来制作 ö)或 alt+0 来表示度数符号)。我只想为像 OP 这样的 emacs 函数打出 alt d、f、w、b。如果我找到答案会更新
    【解决方案7】:

    您应该使用KeyRemap4MacBook。在Emacs Mode 部分,您会发现许多选项可将 Option 键用作 Meta,包括 Option+BF to Option+Left/Right

    但是,如果您是像我这样的铁杆 Dvorak 用户,并且想要使用原始 Dvorak 布局使用诸如 M-bM-f 之类的键绑定,那么就会出现问题。您只能在 QWERTY 布局中“向后/向前移动一个单词”。我使用的是 8.4.0 版本,所以我不知道 Mavericks 的最新版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 2014-03-31
      • 2020-04-16
      相关资源
      最近更新 更多