10

任意の関数または列のセットを使用して Dired にファイルを表示させるにはどうすればよいですか? 基本的に私はから変更したい:

 -rw-r--r--  1 konrad konrad  3847863 Out 18 14:17 ClojureinAction.pdf
 -rw-rw-r--  1 tamara tamara 27338341 Out 20 07:16 Halliday, Resnick, Walker - Fundamentals of Physics.pdf
 -rw-r--r--  1 konrad konrad  3921024 Set 22 11:11 Pragmatic.Programming.Clojure.May.2009.pdf

のようなものに

644 1-5MB    ClojureinAction.pdf       PDF  (5 days ago, 400pgs)
664 10-100MB Halliday, Resnic...pdf    PDF  (3 days ago, 1000pgs, Tamara's)
644 1-5MB    Pragmatic.Progra...pdf    PDF  (1 min ago, 100 pages)

ありがとう!


編集:答えてくれてありがとう、ガレス、もっと詳しく教えてください。どうやらフックは、バッファがロードされたときに任意のコードを実行できるようにします。Diredはバッファのロードを止めません:(

(defun foo (&rest args) (unlocking-buffer (message "foo") (insert "foo\n")))

dired のソース コードをちらりと見ると、私が置き換えようとしているまさにこれらの形式から情報を取得しているように見えるので、このように変更することが実行可能かどうか、またはすべてを書き直さなければならないことになるかどうか疑問に思います。

4

4 に答える 4

3

これはあなたが探しているものほど抜本的ではありませんが、Emacs が を呼び出す方法をカスタマイズすることは可能lsですdired-mode

M-x customize-variable RET dired-listing-switches RET

オプションを使用してファイルのグループ ID を省略し、-o水平画面の領域を節約するために使用しました。

于 2012-01-31T22:25:16.527 に答える
3

dired モードでは、出力形式についてかなりの仮定がls行われるため、形式を変更すると多くのことが壊れます。より実現可能なアプローチは、フォーマットをそのままにして、テキスト プロパティまたはオーバーレイを使用してプレゼンテーションを変更することだと思います。

于 2010-11-06T11:52:11.377 に答える
2

の出力をls必要な形式に変換する関数を作成し、その関数を に追加しますdired-after-readin-hook

追加するために編集:dired-modeの出力を解析してファイルの名前を決定するlsため、形式を変更すると dired の一部の機能が壊れます。directory-listing-before-filename-regexpとを変更することで、それら (の一部) を再び機能させることができますdired-permission-flags-regexpdired-move-to-filename形式への変更は非常に根本的なものであるため、関数とを書き直すことをお勧めしますdired-move-to-end-of-filename

(これは難しいように聞こえますが、不可能ではありません。説明した方法で dired バッファーの形式をカスタマイズしますが、提案されているほど根本的にではありません。)

dired-modeを呼び出すことで現在の行のファイル名を取得できると想定しているため、ファイル名の切り捨てを主張する場合、多くの作業が必要になります。

(buffer-substring (dired-move-to-filename) (dired-move-to-end-of-filename))
于 2010-11-06T01:05:15.953 に答える