我正在尝试编写一些elisp来处理当前缓冲区中的每个字符(我知道这会有点慢,但认为这是最好的方法).我不想使用正则表达式.这该怎么做?
该函数buffer-string将当前缓冲区作为字符串返回.使用它可以迭代并引用/设置每个字符.我无法弄清楚如何将结果放回缓冲区.
有人可以给出一个只是迭代每个字符的例子,以一种简单的方式改变它,并将结果放回缓冲区吗?
使用while循环并forward-char迭代缓冲区中的所有字符:
(goto-char (point-min))
(while (not (eobp))
(let* ((current-character (char-after))
(new-character (do-something current-character)))
(delete-char 1)
(insert-char new-character))
(forward-char 1))
Run Code Online (Sandbox Code Playgroud)
只要eobp未到达缓冲区()的末尾,循环就一次向前移动一个字符.
char-after为您提供当前位置的角色.该delete-char/ insert-char电话换旧符用新的,从处理旧符的结果.
要用多个字符替换旧字符,即字符串,只需insert-char使用insert. 在新插入的字符之后insert放置该点,因此循环将继续使用下一个未处理的字符.