例如:我有一个文件longest_substring_no_repeating_chars.cc
。有一天,我想将其重命名为longest_substr_no_repeating_chars.cc
。如何通过编辑旧名称来实现?或者有没有方便的方法呢?
答案 0 :(得分:3)
假设您要重命名当前正在编辑的文件,您可以定义类似这样的函数:
(defun rename-file-and-buffer ()
"Renames current buffer and file it is visiting."
(interactive)
(let ((name (buffer-name))
(filename (buffer-file-name)))
(if (not (and filename (file-exists-p filename)))
(message "Buffer '%s' is not visiting a file!" name)
(let ((new-name (read-file-name "New name: " filename)))
(cond ((get-buffer new-name)
(message "A buffer named '%s' already exists!" new-name))
(t
(rename-file name new-name 1)
(rename-buffer new-name)
(set-visited-file-name new-name)
(set-buffer-modified-p nil)))))))
你可以把它绑定到像 C-c r 这样的关键组合
(global-set-key (kbd "C-c r") 'rename-file-and-buffer)
否则,@ Oleg建议使用dired
是一个很好的选择。
答案 1 :(得分:2)
您可以在直接模式下执行此操作。 R
快捷方式调用dired-do-rename
可以按向下取回旧名称。
如果你使用dired-x,只需添加到你的init文件就更容易了。
(require 'dired-x)
然后您可以按 C-x C-j R 进行编辑,然后根据需要进行编辑,然后 q 返回缓冲区。
另一种可能性:M-x wdired-change-to-wdired-mode
。在这种模式下你可以
直接编辑文件。如果要提交更改,请按C-c C-c
或
C-c ESC
取消它们。