親ディレクトリがまだ存在しない新しいファイルを開く


9

親ディレクトリがまだ存在しない新しいファイルを開くときは、シェルウィンドウまたはEmacsシェルバッファーを開き、その中のディレクトリを開きますmkdir。これは面倒です。もっと簡単な方法はありますか?

回答:


16

それがあなたの質問であれば、あなたはそれをする必要はありません。

C-x C-f /some/new/directory/newfile.txt

Emacsはディレクトリ/some/new/directory/がまだ存在しないことを知らせるメッセージを表示します:Use M-x make-directory RET RET to create the directory and its parents

新しいファイルの新しいバッファにテキストを挿入しますnewfile.txt

C-x C-s ファイルを保存します。

Emacsは、不足している中間ディレクトリを作成するかどうかを尋ねます(例:new/directory/y「yes」でヒットします。

それほど面倒ではありません、IMO。既存のディレクトリの名前を誤って入力した可能性があるため、UIは確認を求める必要があります。


M-x make-dir tab(それがemacs -Q機能することを確認するためにテストされた)を使用することもできRET RET、それ以上プロンプトを表示することなくディレクトリを作成します。
Jonathan Leech-Pepin 2014

1
@ JonathanLeech-Pepin:はい、もちろん。(それがメッセージの意味です。)しかし、新しいファイルバッファを既に開いている場合は、それを保存して、でディレクトリの作成を確認してくださいy
ドリューは

7

以下のためのidoユーザー

  • 実行C-x C-f(を呼び出す必要がありますido-find-file)して、存在しないパスを入力します。
  • M-mm新しいディレクトリを取得するためのニーモニック)を押します。ヒットRET
  • 作成する新しいファイル名をその新しいディレクトリに入力し続けます。ヒットRET

1

この状況では、emacsは次のようなメッセージを表示しているはずです。

use M-x make-directory RET RET to create the directory and its parents

面倒ですか?

はい、そうです。


0

find-file親ディレクトリがまだ存在しない場合に、自動的に親ディレクトリを作成するようにしたい場合は、initファイルで次の操作を実行できます。

(defun my-find-file (orig-fun &rest args)
  (let* ((filename (car args))
         (directory (file-name-directory filename)))
    (if (not (file-directory-p directory))
        (make-directory directory t))
    (apply orig-fun args)))

(advice-add 'find-file :around 'my-find-file)

結局のところ、Emacsは拡張可能でカスタマイズ可能なように設計されています。

参照:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.