【问题标题】:Emacs question - hash keyEmacs 问题 - 哈希键
【发布时间】:2011-04-27 23:37:40
【问题描述】:

我有一台 Mac 笔记本电脑,我正在连接到运行 Linux 的服务器。由于 Alt+3 已在 EMACS 中绑定到命令,因此我无法在文件中插入井号。 我尝试了以下在网上找到的解决方案:

(global-unset-key (kbd "C-3"))
(global-set-key (kbd "C-3") '(lambda() (interactive) (insert-string
"#")))      //I know that C is for CTRL not Alt - I have tried with
M-3 instead as well

还有其他一些,但似乎没有一个工作。你能告诉我任何 我可以在其中输入井号 (#) 的其他方式 文件。

Aso 试过(没用):

(fset 'insertPound "#")
(global-set-key (kbd "M-3") 'insertPound)

谢谢!

【问题讨论】:

  • 你为什么使用“Alt+3”?那不是“shift-3”字符吗?
  • 您的第二个解决方案(来自stackoverflow.com/questions/1704119)对我来说效果很好。宁愿假装是澳大利亚人:)
  • 正如其他回复所推测的那样,Andrei 在他的 Mac 上有一个英国键盘。这是该布局的奇怪之处之一,您会得到一个带有 Option+3(not 标记在键盘上)的“#”(Octothorp/Hash)字符 - Shift+3 为您提供“£”(GB磅);以及带有 Option+2 的“€”(欧元)字符(在键盘上标记!) - Shift+2 为您提供“@”(AT)

标签: macos emacs


【解决方案1】:

来自http://jimbarritt.com/non-random/2010/11/07/typing-the-pound-or-hash-key-in-emacs-on-uk-macbook

在英国 Macbook 上的 emacs 中键入井号或井号 (#) 键:

OS X 和英式键盘的问题在于,井号键实际上有一个 £。要获得“#”,您必须按 Alt+3

当然,在 emacs 中,alt 键是 emacs 捕获的元键。下面插入到您的 .emacs 文件中的简单函数应该正确映射键。

;; Allow hash to be entered  
(global-set-key (kbd "M-3") '(lambda () (interactive) (insert "#")))

【讨论】:

  • 不适用于 isearch!有人找到解决方案了吗?
  • 跟进,这为 isearch 完成了工作: (define-key isearch-mode-map (kbd "M-3") '(lambda () (interactive) (isearch-process-search -char ?\#)))
【解决方案2】:

我假设你有一个 Mac UK 键盘,所以 Shift-3 是 £。在大多数其他键盘上,Shift-3 是 # 正如其他人所说的那样。

我绕过它的方法是将输入源更改为澳大利亚唯一的区别是 Shift-3 现在是 # 和 Alt-3 是 £(或保留为 emacs 绑定)

输入源设置 是系统偏好设置->语言和文本->输入源
在更高版本的 OSX 上(肯定是 OSX 10.11,但会更早)输入源设置是系统偏好设置->键盘->输入源默认情况下,这将只显示英国键盘以查看更多点击列表底部的 + 并添加澳大利亚人

我更喜欢这个而不是在 emacs 中添加代码的原因是 Shift-3 是所有应用程序的#,例如包括 Xcode/Eclipse,所以我不必根据应用程序或根据我是在美国键盘上还是在 Windows/Linux 等上切换键。

【讨论】:

  • +1。我需要变得更加文化敏感,并意识到有与我自己不同的键盘。 :)
  • 我觉得下面的global-set-key方法比较好。
  • @otfrom - 也许适用于 emacs,但我的建议适用于其他应用程序,例如Xcode/Eclipse/vi 也是如此
  • @Mark - Alt+3 已经适用于在 xcode/eclipse/vi/chrome/firefox/etc 中添加#。唯一的问题是在 emacs 中 Alt (Meta) 被 emacs 吞噬并且它跳过了自插入。
  • 我之前将我的 Mac 设置为爱尔兰键盘以获得合理的 # 字符,但不知何故停止工作并开始在 Shift-3 上提供 £。但澳大利亚人仍然成功。
【解决方案3】:

我知道这有点晚了,答案已被接受。但是,我刚刚从 Linux 迁移到带有英国键盘的 MacOS,并且遇到了同样的问题。

注意:我从这里使用 emacs:http://emacsformacosx.com/。 Carbon Emacs/Aquamacs 等可能会有所不同。

如果您只需要# 符号,上面的global-set-key 方法很好,但是如果您还需要访问 字符怎么办? (在英国键盘上是 Alt-3)

我的解决方案是将其添加到我的初始化文件中:

(setq ns-right-alternate-modifier (quote none))

这将删除右侧 alt/option 键的 emacs 绑定。

您可以使用

查看所有可用选项
M-x customize-group RET ns RET

归功于http://emacsformacosx.com/tips

【讨论】:

  • 我比你晚参加聚会,但我非常感激。我是黑客 emacs 的新手,在编写 shell 脚本的过程中,我被困在了参数扩展上。谢谢你:)
  • € 在我的英国 mac 键盘上是 alt-2
  • 谢谢!您的解决方案更优雅,更完美
  • 这对我不起作用:可能是因为我从终端运行 emacs 并且选中了“使用 Option 作为 Meta 键”?
【解决方案4】:

这里和其他地方给出的许多解决方案都适用于在普通缓冲区中输入#,但它们不能让它像普通按键一样工作;特别是,它将中止增量搜索,这使得编写处理 Python cmets 或 C #includes 的宏变得很困难。因此,最好更早地转换键,这样它就像另一个打字键一样。

我发现将此命令添加到您的 Emacs 配置中效果很好:

(define-key key-translation-map (kbd "M-3") (kbd "#"))

...并删除所有(global-set-key...) 尝试。

如果 - 像我一样 - 你切换你的修饰键,Opt ⌥ 被映射到 Hyper,所以我只需要使用皮带和大括号:

(define-key key-translation-map (kbd "M-3") (kbd "#"))
(define-key key-translation-map (kbd "M-£") (kbd "#"))
(define-key key-translation-map (kbd "H-3") (kbd "#"))
(define-key key-translation-map (kbd "H-£") (kbd "#"))
(define-key key-translation-map (kbd "S-3") (kbd "#"))
(define-key key-translation-map (kbd "S-£") (kbd "#"))

【讨论】:

  • 这是一个很好的答案!完全符合我的需要,而无需在我的整个 Mac 上悬挂澳大利亚国旗:-)
【解决方案5】:

我的解决方案(注意转义序列):

;; Even though we may have set the Mac OS X Terminal's Alt key as the emacs Meta key ...                                                                                                                                                                                      
;; ... we want to be able to insert a '#' using Alt-3 in emacs as we would in other programs                                                                                                                                                                                  
(fset 'insertPound "#")
(define-key global-map "\M-3" 'insertPound)

【讨论】:

    【解决方案6】:

    正如 S.Lott 所说,插入一个数字符号(或哈希、磅、八字形)是 S-3

    为什么要使用元修饰符来插入呢?另外,M-3 绑定到您的设置是什么?您可以通过执行 C-h-k 然后按组合键来获得它。


    假设您正确引用了Alt,并且它正在设置您可以推动的元修改位

    (global-unset-key (kbd "M-3"))
    

    进入您的.emacs 并对其进行评估以防止这种情况发生。

    所有“普通”键都绑定到self-insert-command。 shift 修饰符只是将用于调用此函数的“键”大写,因此在执行 S-3 时会得到 # 而不是 3。

    另外,我仍然不明白您为什么使用 Alt 而不是 shift 来显示 # 符号。当你想输入@时你会怎么做?

    【讨论】:

    • 我的机器上是 Alt+3。在 EMACS 中,这必然是 split-windows-horizo​​ntaly。
    • Shift+2 表示@。我有一台带有欧式键盘的 MacBook Pro。
    • 它没有用。现在 M-3 仍然将我的显示分成两个窗口。
    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多