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 に答える