首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换Emacs中的点字符

替换Emacs中的点字符
EN

Stack Overflow用户
提问于 2014-04-04 09:47:32
回答 2查看 1K关注 0票数 3

在Emacs Lisp中有没有替换点字符的函数?

目前我能做的是:

代码语言:javascript
运行
复制
(goto-char pt)
(delete-char 1)
(insert c)
EN

回答 2

Stack Overflow用户

发布于 2014-04-04 10:17:48

我不认为有一个函数可以做到这一点,但当然你可以把上面的内容包装在一个defun中。

票数 1
EN

Stack Overflow用户

发布于 2014-04-04 14:47:25

有一些常见的替换方法,例如切换大小写,切换"(“to ")",提高/降低数字。可以通过以下方式完成:

代码语言:javascript
运行
复制
(defun reverse-chars (&optional arg)
  "Reverse reciproke chars as \"[\" to \"]\", upcase or downcase,
Switch `\"' with `''

If over a number, add ARG to it.
With negative arg, substract from number.
Et EOB, look backward for next number. "
  (interactive "*p")
  (let (i done)
    (if (looking-at "[0-9]")
        (ar-add-to-number arg)
      (let* ((cf (char-after))
             (cn (when (char-or-string-p cf)(downcase cf))))
        (cond ((or (eobp)(eq cf 32)(eq cf ?\ ))
               (when (< 0 (abs (skip-chars-backward "^0-9" (line-beginning-position))))
                 (forward-char -1)
                 (ar-add-to-number arg)
                 (setq done t)))
              ((eq cf 34) ;; ?\"
               (setq cn "'"))
              ((eq cf 39) ;; ?\'
               (setq cn "\""))
              ((eq cf 43) ;; ?\+
               (setq cn "-"))
              ((eq cf 62) ;; ?\>
               (setq cn "<"))
              ((eq cf 60) ;; ?\<
               (setq cn ">"))
              ((eq cf 187) ;; ?\»
               (setq cn "«"))
              ((eq cf 171) ;; ?\«
               (setq cn "»"))
              ((eq cf 41) ;; ?\)
               (setq cn "("))
              ((eq cf 40) ;; ?\(
               (setq cn ")"))
              ((eq cf 123)
               (setq cn "}")) 
              ((eq cf 125) 
               (setq cn "{"))
              ((eq cf 93) ;; ?\]
               (setq cn "["))
              ((eq cf 91) ;; ?\[
               (setq cn "]"))
              ((eq cf 45) ;; ?\-
               (setq cn "_"))
              ((eq cf 95) ;; ?\_
               (setq cn "-"))
              ((eq cf 92) ;; ?\\
               (setq cn "/"))
              ((eq cf 47) ;; ?\/
               (setq cn "\\"))
              (t (when (eq cf cn)
                   (setq cn (upcase cf)))))
        (unless done
          (delete-char 1)
          (insert cn))))))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22852075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档