Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换Emacs中点处的字符_Emacs_Elisp - Fatal编程技术网

替换Emacs中点处的字符

替换Emacs中点处的字符,emacs,elisp,Emacs,Elisp,在Emacs Lisp中是否有替换字符的函数 目前我能做的是: (goto-char pt) (delete-char 1) (insert c) 我不认为有一个函数可以做到这一点,但当然你可以将上述内容包装在defun中。有一些常见的替换方法,例如切换外壳、切换(“到”)、提高/降低数字。可通过以下方式完成: (defun reverse-chars (&optional arg) "Reverse reciproke chars as \"[\" to \"]\", upcas

在Emacs Lisp中是否有替换字符的函数

目前我能做的是:

(goto-char pt)
(delete-char 1)
(insert c)

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

有一些常见的替换方法,例如切换外壳、切换(“到”)、提高/降低数字。可通过以下方式完成:

(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))))))
(取消反向字符(&可选参数)
“将reciproke字符反转为\“[\”到\“]\”,上置或下置,
将“\”切换为““”
如果超过一个数字,则向其添加ARG。
使用负arg,从数字中减去。
Et EOB,回头看下一个号码。“
(互动“*p”)
(让我做)
(如果(查看“[0-9]”)
(应收账款添加到数字arg)
(让*((cf(后面的字符))
(cn(当(char-or-string-pcf)(downcase cf))时)
(条件((或(eobp)(等式cf 32)(等式cf?\))
(当(<0(abs(向后跳过字符“^0-9”(行起始位置))时)
(转发字符-1)
(应收账款添加到数字arg)
(设定q完成t)))
((等式cf 34);?\”
(setq cn“”)
((等式cf 39);?\'
(setq cn“\”)
((等式cf 43)\+
(setq cn以“-”号填列)
((等式cf 62);?\>
(setq cn“”)
((等式cf 187);?\»
(setq cn“«”))
((等式cf 171);?\«
(setq cn“»”))
((等式cf 41);?\)
(setq cn)(“”)
((等式cf 40)\(
(setq中国“)”)
((等式cf 123)
(setq cn“}”))
((等式cf 125)
(setq cn“{”))
((等式cf 93);?\]
(setq cn“[”)
((等式cf 91)\[
(setq cn“]”)
((等式cf 45)\-
(setq cn)
((等式cf 95)\_
(setq cn以“-”号填列)
((等式cf 92)\\
(setq cn/))
((等式cf 47)\/
(setq cn“\\”)
(t)(当(等式cf cn)
(setq cn(upcase cf(())))
(除非
(删除字符1)
(插入cn(()())))

录制宏不是很容易吗?为什么
((或(eq cf 95)(eq cf?\ \ \)
?第一个eq何时计算为false,第二个eq何时计算为true?@Cheeso很好,谢谢。将后一种形式改为注释。