Đánh dấu các tập tin trong thư mục với thư mục con


7

Tôi đang cố gắng đánh dấu một tập hợp các tệp (bao gồm các tệp của thư mục con) trong thư mục phù hợp với biểu thức chính quy, vì vậy tôi thực hiện:

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

Tiếp theo %mvà nhập regex của tôi. Không có trận đấu.

Tuy nhiên, nếu tôi nhập cùng một biểu thức chính trên một thư mục "bình thường" (nghĩa là không có công tắc -R) thì biểu thức chính quy phù hợp.

Tôi có làm điều gì sai? Tôi đã thử emacs -Qvà nhận được kết quả tương tự.

biên tập:

Có vẻ như regex thực tế là đáng kể; nhập \.mp3$công việc như mong đợi, nhưng nếu tôi cố gắng neo regex bằng cách sử dụng ^musicđánh dấu mọi thứ trong e:/musicthư mục.

Câu trả lời:


6

Tôi nghĩ rằng đây là một lỗi trong Dired (và cả trong Dired +).

Tôi vừa sửa nó trong Dired + ( dired+.el). Vui lòng tải xuống bản mới nhất (hoặc đợi đến một ngày để nhận nó trong MELPA).

Tôi đã kiểm tra điều này một cách nhanh chóng, vì vậy có thể có một lý do chính đáng cho hành vi (tồn tại) lâu nay, nhưng ít nhất bây giờ, tôi nghĩ đó là một lỗi.

Cảm ơn đã báo cáo nó. Sau khi tôi kiểm tra thêm một chút nữa, tôi sẽ báo cáo đó là lỗi Emacs. Hoặc bạn có thể làm như vậy ngay bây giờ, nếu bạn thích : M-x report-emacs-bug.


CẬP NHẬT

Trên thực tế, mọi thứ thú vị hơn (nghĩa là phức tạp hơn). Hiện tại tôi đang bận, nhưng sẽ cập nhật thông tin này trong một thời gian ngắn.

Nó đủ để nói rằng có những lợi thế cho các cách khác nhau để xác định "tên tệp" được khớp. Nếu bạn lấy phiên bản hiện tại (được cập nhật sáng nay) dired+.elthì nó sẽ làm như bạn mong đợi: khớp tên tệp không có thư mục con làm tiền tố.

Nhưng nó cũng có thể hữu ích để khớp với các thư mục con cộng với tên tệp. Bằng cách đó, ví dụ, bạn có thể khớp cùng tên tệp trong nhiều thư mục con - hoặc không, au choix.

Tôi có thể sẽ thay đổi %m(trong Dired +) để một loại tiền tố nhất định cung cấp cho bạn các hành vi kết hợp khác nhau, thay thế. .

Nếu bạn muốn tự thử nghiệm, chỉ cần lấy định nghĩa dired-mark-files-regexp, cùng với định nghĩa về macro dired-mark-if, từ dired+.elvà thay đổi giá trị của đối số đầu tiên thành dired-get-filename( LOCALP). Có một số khả năng phù hợp, được điều chỉnh bởi giá trị đối số đó.


CẬP NHẬT 2

OK, tôi đã cập nhật Dired + ( dired+.el) ngay bây giờ để cung cấp sự linh hoạt hơn trong vấn đề này.

Bây giờ bạn có thể đánh dấu / bỏ đánh dấu tên tệp phù hợp được xem xét theo các cách khác nhau:

  • Tương đối (không có phần thư mục, đó là những gì bạn đã giả định không chính xác khi bạn khớp).

    Đối với điều này, bạn sử dụng một tiền tố âm arg (ví dụ M--) để đánh dấu và một tiền tố bằng không arg (ví dụ M-0) để bỏ đánh dấu.

  • Liên quan đếndefault-directory bộ đệm Dired. Điều này có nghĩa là tên tệp được xây dựng tên liên quan đếndefault-directory. Đối với một mục trong danh sách thư mục con được chèn, điều này có nghĩa là tiền tố tên tệp tương đối (không có phần thư mục) với tên thư mục con liên quan đếndefault-directory.

    Đối với điều này, bạn sử dụng một đối số dương (ví dụ M-+) để đánh dấu và một tiền tố đơn giản kép arg ( C-u C-u) để bỏ đánh dấu.

    Đây là những gì bạn thực sự phù hợp, điều này giải thích tại sao bạn nhìn thấy những gì bạn đã thấy. Với hành vi này, bạn sẽ cần phải cung cấp một biểu thức chính quy phù hợp với tên liên quan đến default-directorybộ đệm. Việc bạn sử dụng ^trong biểu thức chính quy đã cố gắng khớp với phần đầu của tên này, không phải tên không giới hạn. Đây là hành vi tương tự như vanilla Emacs.

  • Tuyệt đối (tên đầy đủ, bao gồm tất cả các phần thư mục).

    Đối với điều này, bạn không sử dụng không có tiền tố arg để đánh dấu và tiền tố đơn giản arg ( C-u) để bỏ đánh dấu. Do đó, đây là hành vi mặc định cho Dired + . Tôi nghĩ rằng nó có thể là một hành vi mặc định tốt hơn so với những gì được sử dụng bởi vanilla Emacs (tên liên quan đến default-directory).


Thật tuyệt vời - cảm ơn rất nhiều vì công việc bạn đã đặt vào, nó được đánh giá cao
Dave F
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.