2012-05-24 23 views
5

GNU etags tiêu chuẩn không hỗ trợ truy nhập đệ quy các thư mục được thực hiện bởi ex2ant ctags -R. Nếu tôi chỉ có quyền truy cập vào GNU etags, tôi có thể sử dụng bash shell magic như thế nào để tạo ra một bảng TAGS cho tất cả các tệp C++ *.cpp*.h trong thư mục hiện tại và tất cả các thư mục dưới đây một cách đệ quy để tạo một TAGS trong thư mục hiện tại có tên đường dẫn thích hợp cho emacs để giải quyết các mục nhập bảng TAGS.Làm thế nào để sử dụng phép thuật vỏ để tạo ra một etags đệ quy bằng cách sử dụng GNU etags?

+0

Làm thế nào mà bạn "chỉ có quyền truy cập vào GNU etags"? Ctags exuberant là miễn phí có sẵn cho nhiều nền tảng. Bạn không thể cài đặt nó? –

+0

Nhà tuyển dụng không muốn cài đặt phần mềm trái phép, không muốn chống lại điều đó nếu tôi có thể làm việc xung quanh bằng cách sử dụng 'etags' được cung cấp. – WilliamKF

Trả lời

12

Emacs Wiki thường là nguồn tốt cho câu trả lời cho các vấn đề phổ biến hoặc thực tiễn tốt nhất. Đối với vấn đề cụ thể của bạn có một giải pháp cho cả Windows và Unixen:

http://www.emacswiki.org/emacs/RecursiveTags#toc2

Về cơ bản bạn chạy một lệnh để tìm tất cả .cpp và tất cả .h file (selectors thay đổi tập tin nếu bạn sử dụng kết thúc tập tin khác nhau, chẳng hạn như ví dụ , .C) và đưa kết quả vào etags. Vì Windows dường như không có xarg, nên bạn cần phiên bản mới hơn của etags có thể đọc từ stdin (lưu ý dấu gạch ngang ở cuối dòng biểu thị stdin). Tất nhiên, nếu bạn sử dụng phiên bản mới nhất của etags, bạn có thể sử dụng tham số dấu gạch ngang thay vì xargs ở đó.

của Windows:

cd c:\source-root 
dir /b /s *.cpp *.h *.hpp | etags --your_options - 

Unix:

cd /path/to/source-root 
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append 
0

Sử dụng tìm. người đàn ông tìm thấy nếu bạn cần.

+1

và xargs người đàn ông quá, tôi đặt cược. . . . . hoặc chỉ cần cài đặt exuberant và sử dụng etags của nó ... – jthill

+0

Tại sao sử dụng xargs khi có lệnh '-exec +'? – jordanm

1

Lệnh này tạo ra tập tin với tên mặc định "TAGS" etags cho .c, cpp, cpp, .hpp, .Hpp .h tệp đệ quy

find . -regex ".*\.[cChH]\(pp\)?" -print | etags - 
Các vấn đề liên quan