如何在Mac OS X上使用Emacs编写波浪符(~)字符?

7

我习惯在Mac OS X上按Alt+N键来输入~字符。但是在Emacs中无法使用这种方法,因为Alt+N键似乎被绑定到了命令历史记录上。所以我的问题是如何在Mac OS X上的Emacs中输入~字符?

编辑:我正在使用Aquamacs。


你使用的是哪种键盘和键盘布局?英文键盘上至少将其放置在反引号 \ 上方。 - Ry-
我正在使用德国布局的苹果键盘。 - Jan Deinhard
在 MacOS 中,默认情况下,选项+n 不会插入波浪符号(~)。相反,它是一个组合字符,例如创建 ñ(Opt+n n)或小波浪符号 ˜(Opt+n <space>)。 - Quantum7
6个回答

14

虽然这个问题很老,但是对于如今最受欢迎的选择——Emacs for OS X,没有一个满意的答案。因此,为了未来的读者......

纯净的 Emacs for OS X 默认使用两个 Alt 键作为 Meta。由于许多字符在德语 Mac 键盘上都是用 Alt 键输入的(如波浪号、括号、花括号等),我建议将 ns-right-alternate-modifier 设置为 nil,这样就可以使用右侧的 Alt 键输入波浪号 (Alt-n) 和其他字符,而左侧的则可以用作 Meta(如 M-x 命令)。

或者可以将 Cmd 自定义为 Meta。所有选项都可以在 M-x customize-group ns 下进行交互式自定义。


2

您可以打开“字符查看器”,选择“标点符号”,找到“~”(代字号),然后双击它。这将在Emacs点处插入它。“字符查看器”在键盘面板中勾选“菜单栏中显示键盘和字符查看器”后,即可轻松访问。(系统偏好设置窗口)

您还可以定义一个emacs-lisp函数:

(defun tilde () (interactive) (insert "~"))

然后使用 M-x tilde 命令插入波浪符号。您还可以将该函数分配给您选择的按键组合,以便更方便地使用。

(global-set-key "\M-\C-!" 'tilde)   ;; you choose the combo

并将所有这些内容添加到您的“emacs init”文件中。

这个解决方案在编辑器中可以工作,但是在迷你缓冲区中无法工作。有什么办法可以让它在迷你缓冲区中工作吗?我们能否从迷你缓冲区调用这样的函数并将结果放入迷你缓冲区中(我对Emacs还很陌生)? - pbernery
在我看来,这不是答案。根本问题源于Emacs在OS X上禁用Alt键输入字符。请见下面我的回答。 - fpbhb

1

不幸的是,fpbhb的答案在终端(emacs -nw)中运行时无效。

我能够想出一个解决这个问题的解决方案,可以在独立和终端两种情况下使用。此外,我有一个国际键盘,在终端中运行emacs时也能解决不能输入特殊字符的问题。

当作为应用程序运行emacs时,此代码段将左选项键正确绑定到“META”。它不绑定右选项键,右选项键可用于输入特殊字符:

(setq mac-command-key-is-meta nil
      mac-command-modifier nil)
(setq mac-option-key-is-meta t
      mac-option-modifier 'meta
      mac-right-option-modifier nil)

在终端中运行emacs时,上述所有内容都没有影响。要在终端中获得相同的键绑定,您必须执行以下操作:

终端首选项 -> 键盘 -> 使用Option键作为Meta键

不幸的是,这样做后,您将无法在国际键盘上使用Option键输入特殊字符。特别是我缺少了波浪号、反斜杠和@。

我通过将缺失的键映射添加到我的.emacs文件中来解决这个问题:

(define-key key-translation-map (kbd "M-ñ") (kbd "~"))
(define-key key-translation-map (kbd "M-º") (kbd "\\"))
(define-key key-translation-map (kbd "M-2") (kbd "@"))

就是这样。


0

Aquamacs:选项 -> 选项命令元键 -> 元和法语?


0

quoted-insert 应该处理这个。

C-qAlt-N


1
对我来说不起作用,我只得到“î”。我的键盘是比利时法语键盘,但波浪符的键组合在emacs之外也是Alt-N。 - Norswap

0

C-x 8 '加上你选择的元音对我来说就可以了。如果你想让波浪号朝另一个方向,你可以用`替换掉'。

我不知道这个解决方案是否通用。我正在使用Linux。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接