如何在emacs中保存角色

时间:2013-05-05 11:37:40

标签: emacs keyboard-shortcuts

我有一个特殊的unicode字符列表,我经常在其中一个文件中使用。 为了避免一直打字(和学习)unicode数字,我想在我的文件顶部(这只是25个符号)中包含这些字符的行,并在需要时保存/抽出它们。

虽然我找不到保存角色的正确快捷方式......

2 个答案:

答案 0 :(得分:1)

与复制其他任何内容没有什么不同。将点移动到要复制的字符,使用 C-SPC 设置标记,向前移动一个字符,使区域覆盖感兴趣的字符,然后用 Mw保存到kill ring

或者你可以这样做:

(defun my-copy-character-as-kill (pos)
  "Copy the character at point (or POS) to the kill ring."
  (interactive "d")
  (if (eobp)
      (error "End of buffer.")
    (copy-region-as-kill pos (1+ pos))
    (when (called-interactively-p 'interactive)
      (let ((print-escape-newlines t))
        (message "%S" (char-to-string (char-after pos)))))))

(global-set-key (kbd "C-c c") 'my-copy-character-as-kill)

答案 1 :(得分:0)

这是另一种方法,特别是如果不使用很多这样的字符并且不想使用输入法。

下载库ucs-cmds.el并将其放入load-path(字节编译)。然后把它放在你的init文件(〜/ .emacs)中:

(require 'ucs-cmds)
(define-key global-map [remap insert-char] 'ucsc-insert)

然后使用M-- C-x 8 RET并使用completion输入所需字符的Unicode名称或代码点。这样做有两件事:C-x 8 RET插入您在光标之前选择的字符。 M--使它还创建一个与角色同名的命令。然后,您可以将该命令绑定到一个方便的键序列。例如:

M-- C-x 8 RET greek small letter lambda RET

它定义了命令greek-small-letter-lambda,您可以将其绑定到某个键序列。

如果要同时为多个Unicode字符定义此类命令,则可以使用宏ucsc-make-commands来执行此操作。请参阅文件ucs-cmds.el中的评论。您为宏提供了一个正则表达式。它与所有Unicode字符名称匹配。为名称匹配的每个字符创建插入命令。

示例命令创建:

 (ucsc-make-commands "^math") ; Math symbols
 (ucsc-make-commands "latin") ; Latin alphabet characters
 (ucsc-make-commands "arabic")
 (ucsc-make-commands "^cjk")  ; Chinese, Japanese, Korean characters
 (ucsc-make-commands "^box drawings ")
 (ucsc-make-commands "^greek [a-z]+ letter") ; Greek characters
 (ucsc-make-commands "\\(^hangul\\|^circled hangul\\|^parenthesized hangul\\)")