如何方便地输入异或(⊻)运算符?

12
在Julia中,“xor”运算符由以下符号定义:
如果我没记错,这也是唯一代表“xor”的符号。 你该如何方便地输入它呢?
是将其复制或粘贴到我的代码中,还是要记住它的Unicode表示?

3
一个小注释 - 你也可以简单地使用它的普通名称 xor。但是这样无法使用中缀操作符。 - Jakob Nissen
2个回答

16

Julia的REPL具有类似LaTeX的制表符自动完成功能,因此您可以使用\xor<tab>。 如果您在帮助模式下(在REPL中按下?)粘贴字符,则可以查看此类字符的制表符完成情况:

help?> ⊻
"⊻" can be typed by \xor<tab>

help?> α
"α" can be typed by \alpha<tab>
许多编辑器都有相似的制表符自动完成功能。

如果我不是使用 REPL 而是 Jupyter 笔记本或者仅仅是源文件呢? - user1210049
1
你可以在IJulia中做同样的事情,也可以在大多数编辑器中使用相应的Julia插件。 - fredrikekre

0

有一种非常古老的技术叫做二合字,它提供了两个字符的替代品,用于直接从键盘上无法输入的字符。[RFC 1345](尽管二合字早在此之前就存在)提供了一个标准的映射集,其中包括一些数学符号,例如逻辑与(∧)的AN和逻辑或(∨)的OR。一些编辑器和其他程序支持二合字输入功能。

Vim

Vim提供了一个优秀且易于使用的二合字输入功能::help digraph将告诉您所有相关信息。您可以通过在输入模式下键入Ctrl-K,然后输入二合字的两个字符来输入二合字,因此键入Ctrl-KAN将给您

预定义的双字母符号大多遵循RFC 1345,并且不包括,但是你可以轻松地添加自己的任意映射。例如,我的.vimrc文件包含了以下内容(第三个字段中的数字是十进制Unicode代码点值):
digraph  XR 8891    " ⊻  XOR
digraph  NA 8892    " ⊼  NAND
digraph  NR 8893    " ⊽  NOR

Vim的双字符设施非常棒,我强烈推荐使用。自从我发现它以来,我已经成为了一个非常重度使用Unicode数学和其他字符的用户,它绝对节省了我的代码和文档中的空间并提高了清晰度。

请注意,如果您需要在Bash命令行中偶尔输入双字符,可以使用Bash的edit-and-execute-command设施(默认绑定到set -o vi模式下的vset -o emacs模式下的C-x C-e),这将在您的默认编辑器中打开当前命令行。

GNU Screen

GNU Screen提供双字符支持,如果您想在命令行或REPL中使用它们,这可能会很有用。它的工作方式非常类似于Vim,但默认的双字符输入前缀是Ctrl-ACtrl-V

然而,预定义双字符列表比Vim的要短得多(虽然也遵循RFC 1345),并且没有办法通过配置文件添加其他的双字符(尽管您可能能够以某种方式使用bindkey来为其他任意字符添加条目——我还没有尝试过)。

但是,如果您不介意重新编译源代码,它可以被修补以添加任何您喜欢的双字符。这个补丁提供了一个支持RFC 1345中的大部分或全部内容的示例。

GNU Readline

虽然对于命令行和REPL来说最方便,因为它们中的许多都使用GNU Readline,但它目前不提供任何双字符支持。我在这里提到这一点只是因为如果有人能够被说服添加它,那将是非常棒的。

Emacs

据我所知,Emacs没有内置的双字符功能,尽管可能有人已经编写了一个。(如果您是一个认真的Emacs用户,自己编写一个可能不会太难。)

如何在Emacs中插入不寻常的字符?提供了一些预先存在的工具,包括使用 M-x insert-char来搜索类似“xor”的字符串,以及使用helm-ucshelm-unicode从Unicode字符列表中选择。这些方法选择字符比二合字更繁琐。

Visual Studio Code

与Emacs一样,VS Code似乎没有内置的二合字输入功能。这可以很容易地作为扩展添加,但我在Visual Studio Marketplace上找不到这样的扩展。

目前,您最好的选择可能是Insert Unicode扩展。


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