gpt4 book ai didi

emacs - 一个可以让你改变当前打开的文件和缓冲区名称的函数,如何将当前名称设为默认名称

转载 作者:行者123 更新时间:2023-12-01 23:57:07 26 4
gpt4 key购买 nike

这是 Steve Yegge 写的(至少我在他的博客上找到了)。它允许您更改 emacs 中当前打开的文件的名称。是否可以将文件的当前名称作为新名称对话框中的默认名称?我经常在文件名中有一个小错别字,我宁愿只编辑它也不愿重新写一遍整个文件名。

;; Never understood why Emacs doesn't have this function.
(defun rename-file-and-buffer (new-name)
"Renames both current buffer and file it's visiting to NEW-NAME."
(interactive "sNew name: ")
(let ((name (buffer-name))
(filename (buffer-file-name)))
(if (not filename)
(message "Buffer '%s' is not visiting a file!" name)
(if (get-buffer new-name)
(message "A buffer named '%s' already exists!" new-name)
(rename-file name new-name 1)
(rename-buffer new-name)
(set-visited-file-name new-name)
(set-buffer-modified-p nil))))))

最佳答案

您需要使用 read-from-minibuffer :

(interactive (list (read-from-minibuffer "New name: " (buffer-name))))

我还建议使用 error 而不是 message 来报告错误。

附言。如果你想要基于现有文件完成,你可能更喜欢

(interactive (list (read-file-name "New name: " nil nil nil (buffer-name))))

PPS。核心中不存在此功能的原因是大多数人更喜欢从专门的缓冲区操作文件,具体来说,dired用于“目录编辑”和vc-dir对于版本控制,您可以在其中重命名文件并适当处理相应的缓冲区。

关于emacs - 一个可以让你改变当前打开的文件和缓冲区名称的函数,如何将当前名称设为默认名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23045173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com