替换Emacs中点处的字符
在Emacs Lisp中是否有替换字符的函数 目前我能做的是:替换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
(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很好,谢谢。将后一种形式改为注释。