2013-08-30 55 views
7

Tôi đang xem qua mã thủy động lực học rất lớn trong c có, thường là một số biến số rất kém. Bao gồm biến toàn cục có tên 'g'. Tương tự, có một tệp có biến được đặt tên là 'geom' và nhiều biến khác có chứa chuỗi con 'geom' (ví dụ: hình học, geomal, geom_arb, v.v.).Tìm kiếm Emacs bằng kết hợp regex chính xác thay vì một phần

Có cách nào để tìm kiếm các biến khớp chính xác với regex không, thay vì một phần?

Ví dụ: tìm kiếm 'geom' không không khớp với 'geomAL'. Rõ ràng emacs không một prior2 biết nơi một biến bắt đầu hoặc kết thúc, nhưng điều này có thể được xây dựng như là một chức năng cho c-mode?

+1

http://www.emacswiki.org/emacs/RegularExpression – devnull

Trả lời

7

Các Emacs cơ biểu thức chính quy (C-M-s<regexp>) có toán hạng khác nhau cho các loại điều này, chẳng hạn như ranh giới từ \<\> khẳng định zero-chiều rộng. Vì vậy, \<geom\> chỉ phù hợp với geom một mình và (tùy thuộc vào bảng cú pháp của chế độ của bạn) có lẽ cũng là tiền tố trong geom_something. Hãy thử \<geom\>[^_] nếu bạn cần loại trừ hậu tố gạch dưới.

+0

Xin lỗi, tôi đã chỉnh sửa câu trả lời này thay vì của chính tôi một cách tình cờ. Có cách nào để hủy chỉnh sửa không? – mvw

+0

@mvw: Đã bị người đánh giá từ chối. Bạn cũng có thể khôi phục bản chỉnh sửa bằng cách nhấp vào liên kết "đã chỉnh sửa" và tìm liên kết quay lại trong tiêu đề của bản chỉnh sửa trước đó trước chỉnh sửa không mong muốn. – tripleee

+0

Cá nhân tôi thích toán hạng '\ b', mà tôi thấy dễ gõ hơn một chút, < or >. – Malabarba

1

Bạn đã thử hệ thống TAG của Emacs chưa? Nó sẽ có thể phân tích các vars ra và nó có thể cung cấp tra cứu chính xác. Xem ở đây: http://www.emacswiki.org/emacs/EmacsTags

Tạo bảng thẻ với etags helper:

etags *.c 

Hãy tìm một thẻ với

M-. your-var-name 
3

Bạn có thể sử dụng C-u C-s \_<g\_> sẽ tìm kiếm biểu tượng g bằng cách sử dụng tìm kiếm biểu thức chính quy với điểm đánh dấu ranh giới biểu tượng. Hoặc trong một Emacs đủ gần đây, bạn có thể làm M-s _ g sẽ thực chất giống nhau (M-s là "khóa tiền tố tìm kiếm" trong đó M-s _isearch-forward-symbol).