Lisp语言 执行函数未按教程得到结果 请问 我的问题处在哪呢?

跟着 https://learnxinyminutes.com/docs/zh-cn/elisp-cn/ 学lisp 输入下面这段代码

(defun hello(name)                                                                                  
  (insert (format "Hello %s!\n"name)))                                                               
                                                                                                     
(hello"you")                                                                                         
                                                                                                     
(setq list-of-names '("Sarah""Chloe""Mathilde"))                                              
                                                                                                     
(car list-of-names)                                                                                  
                                                                                                     
(cdr list-of-names)                                                                                  
                                                                                                     
(push "Stephanie" list-of-names)                                                                     
                                                                                                     
(defun hello-to-bonjour()                                                                            
  (switch-to-buffer-other-window "*test*")                                                         
  (erase-buffer)                                                                                     
                                                                                                     
  (mapcar 'hello list-of-names)                                                                      
  (goto-char (point-min))                                                                            
                                                                                                     
  (while (search-forward "Hello" nil t)                                                              
    (replace-match "Bonjour")                                                                        
  (other-window 1)))                                                                                 
                                                                                                     
(hello-to-bonjour)  

运行后在另一个window得到:

Bonjour Stephanie!
Hello Sarah!
Hello Chloe!
Hello Mathilde!

为什么没有像教程里那样把每个"Hello"都转成"Bonjour"呢? 我问题出在哪?

因为输错了

  (while (search-forward "Hello" nil t)                                                              
    (replace-match "Bonjour")                                                                        
  (other-window 1))

应为

(while (search-forward "Hello" nil t)
    (replace-match "Bonjour"))
  (other-window 1)

你将other-window放在循环体内了,第一下替换之后就切走了。

楼主有多个提问请尽量在同个帖子内用回复的方式提出,每个问题都单独发帖会导致刷屏影响阅读。

多谢 :pray:

知道了,我后面会按主题 归并自己的提问。

排版也很重要,正确使用空格&缩进,有助于及早发现问题。

学到了,多谢~