如何在Emacs中为unicode字符名添加缩写名

如何在Emacs中为unicode字符名添加缩写名,unicode,emacs,utf-8,elisp,Unicode,Emacs,Utf 8,Elisp,使用emacs-24 有些unicode名称相当长。根据上下文,某些字符有多个名称。我想添加一些缩写/同义词。怎么做 这种方法还不错,但我遇到了短名称与长名称别名的问题,而且是非标准的,即与输入其他名称的方式不一致: (global-set-key (kbd "C-x g all") "∀") 将字符放在键上的方法在Emacs中存在问题,部分原因是keymap已经过载: (define-key key-translation-map (kbd "C-~") (kbd "¬")) 作为第二个问

使用emacs-24

有些unicode名称相当长。根据上下文,某些字符有多个名称。我想添加一些缩写/同义词。怎么做

这种方法还不错,但我遇到了短名称与长名称别名的问题,而且是非标准的,即与输入其他名称的方式不一致:

(global-set-key (kbd "C-x g all") "∀")
将字符放在键上的方法在Emacs中存在问题,部分原因是keymap已经过载:

(define-key key-translation-map (kbd "C-~") (kbd "¬"))
作为第二个问题,我很好奇为什么这会混淆emacs(试试看):

我想要的是将缩写连接到当前的emacs方法中,以便按名称输入unicode字符。(我一直在使用C-X8 RET name RET-尽管我希望有一种方法可以用更少的笔划来实现这一点。)

提前感谢

  • 您可以轻松定义插入给定字符的命令(或者从一小部分字符中选择,而不是从整个Unicode字符中选择)

    图书馆可以提供帮助。当使用带有负前缀arg的
    C-x 8 RET
    时(例如
    C--
    ),它不仅会插入您选择的字符,还会创建一个命令来插入字符-命令名与字符名相同。您可以为整个范围或其他字符集快速创建此类命令(例如,通过匹配regexp)。当然,您可以将命令重命名为任何您喜欢的名称,包括较短的版本

    但您已经知道如何将键绑定到插入给定字符的键盘宏,如您所示。如果有助于为此提供命名命令,则
    ucs cmds.el
    可以提供帮助

  • 您也可以单独使用,例如:

    (defun neg (&optional n)
      "Insert \"¬\".  With prefix arg N, insert N times."
      (interactive "p")
      (dotimes (ii n) (insert "¬")))
    
    (global-set-key (kbd "C-x g neg") 'neg)
    
  • 但是您显然对插入特定字符的专用命令不太感兴趣,您希望能够使用
    C-x 8 RET
    ,但在提示时键入字符名的缩写,而不是尝试匹配真实的字符名

    为此,我可以帮忙。当您使用
    C-x 8 RET
    时,您可以匹配字符名称或其代码点(或字符本身-当字符易于键入且您想知道其名称或代码点时,此功能非常有用)。您可以同时匹配这些选项的任意组合

    匹配可以是子字符串、regexp、pcompletion或几种模糊匹配中的任何一种,您可以动态更改匹配行为。所以你可以得到你想要的缩写的效果,只要你以一种与匹配相对应的方式缩写

  • 至于您关于
    (全局设置键(kbd“C-x g neg”)“,”
    的问题:我认为这是一个bug。考虑报告:<代码> M X报告Emacs Bug < /代码>。这就是它引发的错误:

    0 kbd宏迭代后:用户错误:没有正在进行的M-x标记搜索或M-x标记查询替换


  • 有几种模式可为数学和逻辑所需的符号提供简化输入。例如agda2模式

    我发了错误报告。我的想法是找到C-X8的绑定位置,然后在运行您提到的实际reg-x搜索之前添加一些代码以捕获我的缩写。
    C-hkc-X8ret
    告诉您:“C-X8ret(从C-X8翻译过来)运行insert char命令(在全局映射中找到),这是
    C源代码
    中的一个交互式内置函数,但您可以将
    C-x 8 RET
    绑定到自己的命令,该命令以交互方式执行所需操作,然后根据需要调用
    insert char
    (defun neg (&optional n)
      "Insert \"¬\".  With prefix arg N, insert N times."
      (interactive "p")
      (dotimes (ii n) (insert "¬")))
    
    (global-set-key (kbd "C-x g neg") 'neg)