サブディレクトリでdired内のファイルをマーク


7

正規表現に一致するdiredで一連のファイル(サブディレクトリのファイルを含む)をマークしようとしているので、次のようにします。

C-U C-x d -alR RET e:/ RET

続いて%m、私の正規表現を入力します。一致しません。

ただし、「通常の」diredに同じ正規表現を入力すると(つまり、-Rスイッチがない場合)、正規表現は一致します。

私は何か間違ったことをしていますか?私は試してemacs -Q同じ結果を得ました。

編集:

実際の正規表現は重要なようです。入力\.mp3$は期待どおりに機能しますが、正規表現を使用してアンカーの^music下に配置しようとすると、e:/musicフォルダの下にあるすべてにマークが付けられます。

回答:


6

これはDired(およびDired +)のバグだと思います。

Dired +dired+.el)で修正しました。最新版をダウンロードしてください(またはMELPAで入手するには1日ほどお待ちください)。

私はこれをすばやくチェックしたので、(長期にわたる)既存の動作に正当な理由があった可能性がありますが、少なくとも今のところ、それはバグだったと思います。

ご報告いただきありがとうございます。もう少し調べてから、Emacsのバグとして報告します。または、必要に応じて今すぐ行うこともできますM-x report-emacs-bug


更新

実際には、物事はより興味深い(すなわち、より複雑です)。現在忙しいですが、しばらくしてから更新します。

一致する「ファイル名」を定義するさまざまな方法には利点があると言えば十分でしょう。の現在の(今朝更新された)バージョンを取得すると、dired+.el期待どおりに動作します。サブディレクトリを接頭辞として持たないファイル名に一致します。

ただし、サブディレクトリとファイル名を照合することも役立ちます。そうすれば、たとえば、複数のサブディレクトリで同じファイル名を一致させることができます-au choix。

私は%m(Dired +で)変更する可能性が高いため、特定の種類の接頭辞argが異なる代替の一致動作を提供します。(現在、接頭辞argはマークではなくマークを解除します。マークを解除するかどうか、およびどのようなマッチングを行うかを数値記号が管理するように変更する場合があります。)

あなた自身を試してみたい場合は、単にの定義をつかむdired-mark-files-regexp一緒にマクロの定義と、dired-mark-ifから、dired+.elとに最初の引数の値を変更しますdired-get-filenameLOCALP)。引数の値によって制御される、いくつかの一致する可能性があります。


アップデート2

OK、Dired +dired+.el)を更新して、この点でより柔軟に対応できるようにしました。

さまざまな方法で考慮される一致するファイル名をマーク/マーク解除できるようになりました。

  • 相対(一致しないと誤って考えていたディレクトリ部分がない)。

    このために、M--マークするために負のプレフィックス引数(例えば)を使用し、マークM-0を外すためにゼロのプレフィックス引数(例えば)を使用します。

  • default-directoryDiredバッファーの相対。これは、ファイル名がdefault-directory。挿入されたサブディレクトリリストのエントリの場合、これは、相対ファイル名(ディレクトリ部分なし)の前に、サブディレクトリ名の相対パスを付けることを意味しますdefault-directory

    これには、正の引数(例:)を使用しM-+てマークを付け、2つの単純な接頭辞arg(C-u C-u)を使用してマークを解除します。

    これは実際に一致したものであり、見たものを見た理由を説明しています。この動作default-directoryでは、バッファーの相対名と一致する正規表現を提供する必要がありました。^正規表現でのの使用は、非ディレクトリ名ではなく、この名前の先頭と一致しようとしました。これは、バニラEmacsと同じ動作です。

  • 絶対(すべてのディレクトリ部分を含む完全な名前)。

    これを行うには、マークを付けるためにプレフィックス引数を使用せず、マークを外すためにプレフィックス引数(C-u)を使用します。したがって、これは現在、Dired +のデフォルトの動作です。これは、バニラEmacsで使用されているもの(に関連する名前)よりもデフォルトの動作の方が良いと思います。default-directory


それは素晴らしいです-あなたが入れた仕事にとても感謝します、それは大いに感謝されます
デイブF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.