2011-09-26 20 views
7

Tôi muốn tìm kiếm/tìm kiếm thay thế/chỉ xuất hiện trong mã (không có trong nhận xét hoặc chuỗi).Trong Emacs cách hoạt động (tức là tìm kiếm) chỉ ở các vùng mã?

Đây phải là vấn đề phổ biến, vì vậy gói nào đã làm điều này?

Nếu không có gói hiện tại nào làm điều này, tôi đang nghĩ một chế độ nhỏ nơi chuỗi và nhận xét bị ẩn dựa trên phông chữ sẽ thực hiện thủ thuật. Có cái nào không?

+0

[Dưới đây là một cuộc thảo luận liên quan] (http://thread.gmane.org/gmane .emacs.devel/129755) trên emacs-devel. Rõ ràng vấn đề là bạn có thể che giấu những phần đó, nhưng thay thế sẽ không đưa nó vào tài khoản và làm điều của nó trong phần ẩn quá. – Tom

+0

Ngoài ra ở đây: http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/757fb08373f9fbf8 –

Trả lời

0

Có, bạn đã đúng. Chế độ phụ HideShow cho phép bạn ẩn/hiển thị khối văn bản, trong các nhận xét đa dòng cụ thể.

Nhận xét ẩn/hiện không nằm trong gói tiêu chuẩn nhưng trên trang wiki, bạn sẽ tìm thấy mã thực hiện thủ thuật.

Sau đó lệnh tìm kiếm không tính đến các nhận xét bị ẩn.

HOWEVER: thay thế hoạt động trên toàn bộ bộ đệm, bao gồm cả các khối ẩn.

+0

Đã thử với emacs 23.2, ẩn một số mã java và tìm kiếm-thay thế đã sửa đổi nội dung của khối ẩn thành tốt, vì vậy nó không thực sự là một câu trả lời cho câu hỏi. – Tom

+0

Có, bộ phận thay thế hoạt động trên toàn bộ bộ đệm. isearch, tuy nhiên, không nhìn vào khối ẩn –

0

Kiểm tra narrowing.

+0

Rất tiếc, tôi đã bỏ lỡ từ "mã" từ câu hỏi đó. Vâng, kể từ khi thu hẹp là tuyệt vời như vậy, bệnh shamelessly để lại câu trả lời ở đây. Có lẽ bạn có thể sử dụng thu hẹp và bảng cú pháp với một số elisp làm các trick. –

+0

Vấn đề với việc thu hẹp nó chỉ có thể thu hẹp bộ đệm vào một khối tiếp giáp. Nó sẽ rất tốt đẹp nếu emacs sẽ hỗ trợ nhiều khu vực để thu hẹp. – Tom

2

Icicles search cung cấp cho bạn một số cách để thực hiện việc này. Dưới đây là hai:

  • tìm kiếm "mọi thứ" (ví dụ defun s, sexp s, các yếu tố xml, vv), phớt lờ ý kiến ​​(tùy chọn icicle-ignore-comments-flag). Tức là, sử dụng các phân đoạn mã đã chọn làm ngữ cảnh tìm kiếm, nhưng bỏ qua bất kỳ nhận xét nào trong mã hoặc mã bên trong nhận xét.

  • Tìm kiếm complement nhận xét. Ví dụ: xác định ngữ cảnh tìm kiếm là phần bổ sung của các vùng văn bản bị khóa phông chữ với một trong hai mặt font-lock-comment-face hoặc khuôn mặt font-lock-comment-delimiter-face (có nghĩa là tìm kiếm tất cả mã bên ngoài nhận xét).

Sau khi xác định ngữ cảnh tìm kiếm, chỉ cần nhập văn bản để lọc dần các ngữ cảnh. Và bạn có thể replace bất kỳ trận đấu nào theo yêu cầu.

0

Isearch+ thực hiện những gì bạn yêu cầu (cũng như Icicles --- xem other answer, ở trên).

Bạn có thể xác định bối cảnh rằng Isearch tìm kiếm, sử dụng bất kỳ những điều sau đây:

  • Một regexp để được xuất hiện.
  • Thuộc tính văn bản hoặc lớp phủ cho trước --- Ngữ cảnh tìm kiếm là vùng văn bản có thuộc tính (ví dụ: giá trị `mặt 'hoặc kết hợp giá trị cụ thể)
  • Một Emacs nhất định THING (sexp, defun, list, chuỗi, nhận xét, v.v.) --- Các ngữ cảnh tìm kiếm là các vùng văn bản của loại THING nhất định.

Sau khi xác định bối cảnh tìm kiếm, bạn cũng có thể tìm kiếm bổ sung: các phi -contexts.Bạn có thể chuyển đổi giữa các ngữ cảnh tìm kiếm và không bối cảnh bất cứ lúc nào trong Isearch, sử dụng C-M-~.

Khi tìm kiếm, theo mặc định các khu vực không được tìm kiếm sẽ bị làm mờ một chút, để làm cho các khu vực có thể tìm kiếm nổi bật.

Đối với ngữ cảnh tìm kiếm với Isearch bạn cần hai thư viện này:

+0

Bên cạnh các tập tin được đưa ra ở đây, nơi để tải toàn bộ cục nước đá? Chỉ có thể xem https://github.com/emacsmirror/icicles/archive/master.zip –

+0

@ AndreasRöhler: Có nhiều cách để tải xuống Icicles. Chúng được mô tả [ở đây] (http://www.emacswiki.org/emacs/Icicles_-_Libraries). Ví dụ, bạn có thể lấy Icicles từ [MELPA] (http://melpa.milkbox.net/). (Nhưng rõ ràng, các tập tin Isearch được đề cập ở đây là độc lập với Icicles.) – Drew

Các vấn đề liên quan