重命名Emacs中的当前缓冲区和相关文件
我想重命名在Emacs中绑定到当前缓冲区的文件 我在本文中发现以下elisp: 它工作正常,但如果可能,我想将当前文件名设置为默认值。重命名Emacs中的当前缓冲区和相关文件,emacs,Emacs,我想重命名在Emacs中绑定到当前缓冲区的文件 我在本文中发现以下elisp: 它工作正常,但如果可能,我想将当前文件名设置为默认值。 我该怎么写呢?您能详细说明一下为什么需要这样做吗? 条件是什么? 因为自从我开始使用Emacs以来,这个问题就从未出现过 但当我想重命名某个东西时,我有时会这样做: 假设我正在编辑spam-spom-spam.cc。我想确定名字 C-xd C-s spo C-x C-q 德拉 C-C-C 这看起来像是很多命令,但它们的流程非常自然。 作为奖励,您可以大致了解您
我该怎么写呢?您能详细说明一下为什么需要这样做吗? 条件是什么? 因为自从我开始使用Emacs以来,这个问题就从未出现过 但当我想重命名某个东西时,我有时会这样做:
(取消重命名文件和缓冲区()
“重命名当前缓冲区及其访问的文件。”
(互动)
(let((文件名(缓冲区文件名)))
(如果(不是(和文件名(file-exists-p filename)))
(消息“缓冲区未访问文件!”)
(let((新名称(读取文件名“新名称:”文件名)))
(续)
((vc后端文件名)(vc重命名文件名新名称))
(t
(重命名文件名新名称t)
(设置访问的文件名新名称t(()()()())))
(全局设置键(kbd“C-C r”)'重命名文件和缓冲区)
此操作不需要外部工具。看
更改dired缓冲区中的文件名后,缓冲区名称也会更改。看看这是否回答了您的问题?请参阅“dired-x”中的
dired-jump
,谢谢,这很有用。我有一个(dired default directory)
的快捷方式,但是这个要好一点。谢谢你的回复。我想在开始编写shell脚本时更改文件名,但之后我想更改它的名称。我仍在编写脚本。编辑原始函数以检查是否存在具有新名称的文件。根据
;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file
(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)
(progn
(rename-file name new-name 1)
(rename-buffer new-name)
(set-visited-file-name new-name)
(set-buffer-modified-p nil))))))