在Emacs中重命名当前缓冲区和相关文件 [英] Rename current buffer and related file in Emacs

查看:339
本文介绍了在Emacs中重命名当前缓冲区和相关文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在Emacs中重新命名一个绑定当前缓冲区的文件。



我发现这篇文章中有以下elisp:
如何重命名Emacs中的打开文件?

  ;;来源:http://steve.yegge.googlepages.com/my-dot-emacs-file 
(defun rename-file-and-buffer(new-name)
重命名当前的缓冲区和文件
(交互式新名称)
(let((name(buffer-name))
(filename(buffer-file-name)))
(如果(不是文件名)
(消息缓冲区'%s'不访问文件!)
(if(get-buffer new-name)
消息名为'%s'的缓冲区已经存在!new-name
(progn
(rename-file name new-name 1)
(rename-buffer new-name)
(set-visited-file-name new-name)
(set-buffer-modified-p nil))))))

它工作正常,但如果可能,我想将当前文件名设置为默认值。
我该怎么写?

解决方案

最近有一个
emacs Redux 博客上的//emacsredux.com/blog/2013/05/04/rename-file-and-buffer/rel =nofollow> post 关于这个问题。



基本上它是在前奏
配置(由同一作者),您可以安装它来获得此行为和吨其他有趣的东西。否则,您只能将配置文件放入相关的代码段(从上面的博客文章中获取):

 (defun rename-file-and-buffer()
重命名当前访问的缓冲区和文件
(interactive)
(let((filename(buffer-file -$)
(if(not(和filename(file-exists-p filename)))
(消息缓冲区不访问文件!)
(let新名称(read-file-nameNew name:filename)))
(cond
((vc-backend filename)(vc-rename-file filename new-name))
(t
(rename-file filename new-name t)
(set-visited-file-name new-name tt))))))))

-set-key(kbdCc r)'rename-file-and-buffer)


I want to rename a file that is bound current buffer in Emacs.

I found following elisp from this article: How do I rename an open file in Emacs?

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

It works fine, but if possible I want to set current file name as a default value. How would I write this?

解决方案

There recently was a post on the Emacs Redux blog on this subject.

Basically it is implemented in the Prelude configuration (by the same author) which you can install to get this behaviour and tons of other interesting stuff. Otherwise, you can put in your configuration file only the relevant snippet (taken from the blog post above):

(defun rename-file-and-buffer ()
  "Rename the current buffer and file it is visiting."
  (interactive)
  (let ((filename (buffer-file-name)))
    (if (not (and filename (file-exists-p filename)))
        (message "Buffer is not visiting a file!")
      (let ((new-name (read-file-name "New name: " filename)))
        (cond
         ((vc-backend filename) (vc-rename-file filename new-name))
         (t
          (rename-file filename new-name t)
          (set-visited-file-name new-name t t)))))))

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

这篇关于在Emacs中重命名当前缓冲区和相关文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆