我在Ubuntu工作,但是因为插入unicode字符的标准方法( Ctrl + Shift + U ,之后,unicode代码)在emacs中不起作用,我已经在.emacs
中对我经常使用的不同unicode符号进行了一些击键,例如:
(global-set-key (kbd "C-c b") "☛")
并且每个符号工作正常,除了符号§,当我使用相应的击键时,它被简单的短划线(“ - ”)替换:
(global-set-key (kbd "C-c y") "§")
问题是,它使这个符号与其他符号有什么不同,以及如何解决我的问题呢?
答案 0 :(得分:7)
global-set-key
通常需要一个函数,所以这应该有效:
(global-set-key (kbd "C-c y") (lambda () (interactive) (insert "§")))
但你最好使用优秀的insert-char
功能:
(global-set-key (kbd "<f2> u") 'insert-char)
它理解十六进制Unicode以及文本描述(完成和全部)。 只需按 TAB 即可查看完成情况。
答案 1 :(得分:2)
您可以通过 C-x 8 RET <unicode-hex>
RET 在emacs中插入unicode字符。所以要插入§
做 C-x 8 RET 00A7 RET 。
如果您愿意,可以将insert-char
(由 Cx 8 RET 运行的命令)绑定到更简单的密钥,或者定义自定义函数并将其绑定到键,如下所示
(global-set-key (kbd "C-c y") (lambda () (interactive) (insert "§")))
答案 2 :(得分:1)
通用解决方案需要快速插入多个Unicode字符,为每个定义一个命令,专用于插入它,并将该命令绑定到一个简单的键序列。
实际上,@ abo-abo和@Iqbal为您提供了以下形式:
(lambda () (interactive) (insert "§")))
如果你有多个这样的字符,你想为这些字符创建,那么
图书馆ucs-cmds.el
可以提供两种帮助:
它提供了一个宏,ucsc-make-commands
,它可以让您一举为整个Unicode字符范围定义命令。例如:
(ucsc-make-commands "^cjk")
为每个中文,日文和韩文Unicode字符定义了一个insert-char命令。
(ucsc-make-commands "^greek [a-z]+ letter")
对每个希腊字母做同样的事。
(ucsc-make-commands "arabic")
对每个阿拉伯字符执行相同操作。
它为ucsc-insert
提供了替换命令(C-x 8 RET
),其作用与vanilla命令(insert-char
)完全相同,但如果你给它一个负前缀参数,那么它不仅插入你选择的字符,而且还为它创建一个插入命令(即,宏批量创建的命令类型)。 / p>
宏ucsc-make-commands
和命令ucsc-insert
创建的命令的名称与字符本身的Unicode名称完全相同,只是它们是小写的并且有连字符(-
)代替空间字符。