プログラムでファイルをDiredバッファーに挿入する


10

ファイル名のリスト(フルパスを含む)があり、このファイルのセットをリストするDiredバッファーを作成したい どうすればいいですか?

ファイル名のリストからDiredバッファーを作成するにはどうすればよいですか?

外部依存関係を使用せずに。


どうか明らかにしてください。リスト内の文字列は、a)作成するファイルの名前、またはb)ファイルの内容(絶対パスを持つもの)ですか?
ダン

@Dan絶対パスを含むファイル名のリスト。ファイル名だけです。
火ドゥ

1
私があなたを正しく理解していれば(find-file your-directory-path)、関連するdiredバッファーを取得するために使用できます(例えば、バッファーでディレクトリ(find-file "/tmp/")を開きます)。tmpdired
ダン

1
これらのコメントでのあなたの発言に基づいて質問を編集しました。間違えた場合は、遠慮なくロールバックしてください。
Malabarba 2014年

3
elispのファイルオブジェクトについて質問したい場合、それはまったく別の質問です。非常に短い答えがあります。何もありません。:-)
マラバルバ2014年

回答:


20

C-h f dired答えを教えてくれます。引数diredとして、DIRNAME必要なDiredバッファ名(任意の文字列)を車のリストに、cdrとしてバッファにリストするファイル名のリストを渡すだけです。通常、絶対ファイル名を使用します。例えば:

(dired (list "My Dired Buffer Name*"     ; The Dired buffer name
             "/usr/foo/file1.el"         ; First file
             "/usr/bar/toto/some-file.c" ; Second file
             "/whatever/directory/"      ; Third is a directory
             "/a/file/somewhere.zzz"))   ; Fourth

プラットフォームによっては、入力した存在しないファイルやディレクトリの名前が無視されるか(リストに表示されない)、エラーが発生する場合があります。前者は、使用する場合に発生しますls-lisp.el(MS Windowsなど)。これを実行することでls-lisp、必要に応じて(ただしオプションls-lispは少ないls)任意のプラットフォームでを強制的に使用できます。

(setq ls-lisp-use-insert-directory-program nil)
(require 'ls-lisp)

ライブラリDired +dired+.el)を使用する場合、リストするファイルとディレクトリをインタラクティブに選択できます。dired正でないプレフィックス引数(つまり、<= 0)を指定するだけです。次に、リストするディレクトリとファイル名の入力を繰り返し求められます。*一致するファイルとディレクトリを含めるには、ファイル名のワイルドカード(グロビング用)を使用できます。使用するC-g入力を終了します。

言い換えると、Diredバッファは、単一のディレクトリをリストする代わりに、任意の数のディレクトリとファイル名をリストすることができ、異なるディレクトリツリーに属することさえできます。

(非負の接頭引数(つまり、> = 0)は、lsスイッチの一覧表示を要求します。したがって、ゼロの接頭引数は、一覧表示するスイッチとファイル/ディレクトリの両方を要求します。最初にlsスイッチ、次にファイル/ディレクトリです。)


さて、コマンドを使用せずに、Elispでそれを実行したい (insert ...)テキストをバッファーに挿入するのと同じように、ファイル名(フルパス付き)をDiredバッファーのエントリに変換する単純なコードスニペットが欲しいだけです。
Tu Do

1
@tudo:diredelisp関数です。これを評価するだけ(dired '("my-list" "/home/rekado/dev/script.scm" "/home/rekado/another-file"))です。@ Drewが書いたように、これらのファイルを含むdiredバッファーを取得します。
rekado 2014年

@rekado。ありがとうございます。今、私は答えを正しく読み直しました。私はあなたのようなElispコードスニペットを見たいだけです。私はそれをちらっと見たときに、Drewがユーザーコマンドの回答をくれたと思いました。
Tu Do

@Drew rekadoの例を追加してください。ご回答有難うございます。
Tu Do

最初は、ファイルセットを見ると、こんなに簡単だとは思わなかった。Diredが適切に機能するには、適切なファイルオブジェクトを認識させる必要があると考えました。
Tu Do

2

ファイルのリストがバッファにあるときにこれを行うコマンドを以下に示します。1行に1ファイルです。

(defun dired-virtual-vanilla ()
  (interactive)
  (dired (cons "*Dired*" (split-string (buffer-string) "\n" t))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.