2012-09-28 62 views

回答

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))))))) 

而且你可以把它綁定到像抄送R A組合鍵

(global-set-key (kbd "C-c r") 'rename-file-and-buffer) 

否則,@奧列格建議使用dired是一個不錯的選擇。

+0

是的,它的工作原理。謝謝。 – updogliu

2

您可以在直接模式下執行此操作。 R快捷方式會調用dired-do-rename,您可以按可以按以下以取回舊名稱。

如果您使用dired-x,只需添加到您的init文件中就更簡單了。

(require 'dired-x) 

然後你就可以按C-XÇ-J [R編輯,因爲你需要,那麼 q回到你的緩衝區。

另一種可能性:M-x wdired-change-to-wdired-mode。在這種模式下,您可以直接編輯文件 。當您想要提交更改時按C-c C-cC-c ESC取消它們。

+0

event_jr,感謝您的編輯。 –

+0

在dired-mode中,您可以鍵入熟悉的'toggle-read-only'綁定'Cx Cq'來調用'dired-toggle-read-only',這是一種更方便的方式來調用'wdired-change-to-wdired- mode'。 – phils

相關問題