恢复所有打开的缓冲区(并忽略错误)
当使用git进行版本控制下的项目时,我经常想在shell中做一些会影响许多打开文件的事情,然后还原我打开的每个缓冲区,以确保不会意外破坏新版本无论我打开什么。我知道magit在这里可能会有所帮助,但是我已经习惯了外壳中的工作流程,并且现在想保留它。因此,相反,我想还原所有打开的缓冲区,并可能关闭任何已停止存在的缓冲区(例如,由于git checkout分支的a不再具有该文件)。 我从Google搜索中抓取了以下elisp片段: (defun revert-all-buffers () "Refreshes all open buffers from their respective files" (interactive) (let* ((list (buffer-list)) (buffer (car list))) (while buffer (when (and (buffer-file-name buffer) (not (buffer-modified-p buffer))) (set-buffer buffer) (revert-buffer t t t)) (setq list (cdr list)) (setq buffer (car list)))) (message "Refreshed open files")) 但是,如果它击中这打破了我打开的文件之一,即复原的情况出现错误B1,B2,B3,...,Bn试图还原一个错误B2阻止B3- Bn被恢复。 …