3

例如:我有一个文件longest_substring_no_repeating_chars.cc. 有一天我想把它重命名为longest_substr_no_repeating_chars.cc. 如何通过编辑旧名称来做到这一点?或者有什么方便的方法吗?

4

2 回答 2

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是一个不错的选择。

于 2012-09-28T07:15:36.353 回答
2

您可以在 dired 模式下执行此操作。R快捷方式调用 dired-do-rename ,您可以在其中按down以取回旧名称。

如果你使用 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取消更改时按下。

于 2012-09-28T06:57:46.763 回答