6

Emacs で現在のバッファにバインドされているファイルの名前を変更したいと考えています。

この記事の次の elisp を見つけました: 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))))))

正常に動作しますが、可能であれば現在のファイル名をデフォルト値として設定したいと考えています。これをどのように書きますか?

4

3 に答える 3

5

なぜそれを行う必要があるのか​​ について詳しく説明していただけますか?条件は何ですか?Emacsを使い始めて以来、これは一度も出てこなかったからです。

しかし、何かの名前を変更したいときは、次のようにします。

  1. spam-spom-spam.cc を編集しているとします。そして、名前を修正したい。
  2. C-x d
  3. C-s spo
  4. C-x C-q
  5. DEL a
  6. C-c C-c

これは多くのコマンドのように見えるかもしれませんが、非常に自然に流れます。おまけとして、ディレクトリの概要と、新しく名前が変更されたファイルがどのように見えるかを確認できます。

于 2013-07-24T09:29:28.623 に答える
5

最近 、 Emacs Reduxブログにこの件に関する投稿がありました。

基本的に、これは(同じ作成者による) Prelude 構成で実装されており、これをインストールすると、この動作やその他の多くの興味深い機能を取得できます。それ以外の場合は、関連するスニペットのみを構成ファイルに入れることができます (上記のブログ投稿から取得)。

(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)
于 2013-07-24T13:08:05.280 に答える
4

これには外部ツールは必要ありません。見る

http://www.gnu.org/software/emacs/manual/html_node/emacs/Wdired.html

dired-buffer のファイル名を変更すると、バッファ名も変更されます。

于 2013-07-25T05:19:17.200 に答える