Mỗi lần sau khi tải một cscope.out trong Vim, tôi cần thay đổi "pwd" của Vim thành cùng thư mục với tệp cscope.out, có thể do đường dẫn tương đối cscope sử dụng khi tạo tệp thẻ. Vì vậy, nếu có một cách để buộc cscope sử dụng đường dẫn tuyệt đối trong tệp thẻ của nó - cscope.out, thì nó sẽ không phân biệt liệu pwd của phiên Vim của bạn có giống với thư mục mà tệp cscope.out ở dưới hay không.Làm thế nào để cho phép cscope sử dụng đường dẫn tuyệt đối trong tệp cscope.out?
Trả lời
Khi nhập cscope.out, bạn có thể cung cấp các tiền tố, ví dụ:
:cscope add /path/to/cscope.out /path/to/src/code
Sau đó tìm kiếm của bạn sẽ bật lên như:
Cscope Tag: foobar
# line filename/context/line
1 21 /path/to/src/code/foobar_file.c
@Aaron H. là đúng.
Đối với cấu hình của tôi, tôi sử dụng các plugin cscope_maps.vim và sửa đổi những dòng sau:
40 " add any cscope database in current directory
41 if filereadable("/usr/project/cscope.out")
42 cs add /usr/project/cscope.out /usr/project
43 " else add the database pointed to by environment variable
44 elseif $CSCOPE_DB != ""
45 cs add $CSCOPE_DB
46 endif
đâu "/ usr/dự án" là vị trí của các tập tin cscope.out và đường dẫn tuyệt đối tôi muốn sử dụng.
Các cscope tutorial có một cách giải quyết rất đơn giản cho vấn đề này:
11.Try thiết lập các biến môi trường
$CSCOPE_DB
để trỏ đến một cơ sở dữ liệu cscope bạn tạo ra, vì vậy bạn sẽ không phải lúc nào cần phải khởi động Vim trong cùng thư mục với cơ sở dữ liệu. Điều này đặc biệt hữu ích cho các dự án nơi mã được chia thành nhiều thư mục con. Lưu ý: cho này để làm việc, bạn nên xây dựng cơ sở dữ liệu với tên đường dẫn tuyệt đối: cd vào /, và làmfind /my/project/dir -name '*.c' -o -name '*.h' > /foo/cscope.files
Sau đó chạy cscope trong cùng thư mục với file cscope.files (hoặc sử dụng 'cscope /foo/cscope.files -i), sau đó thiết lập và xuất biến $ CSCOPE_DB, trỏ nó đến tập tin cscope.out mà kết quả):
cd /foo cscope -b CSCOPE_DB=/foo/cscope.out; export CSCOPE_DB
(lệnh cuối cùng ở trên là dành cho Bourne/Korn/Bash shells: Tôi đã quên cách xuất các biến trong shell dựa trên csh, sin ce Tôi tránh chúng như bệnh dịch hạch).
Bây giờ, bạn có thể chạy 'vim -t foo' trong bất kỳ thư mục nào trên máy của bạn và có Vim nhảy ngay đến định nghĩa 'foo'. Tôi có xu hướng viết các kịch bản lệnh shell nhỏ (chỉ định nghĩa và xuất CSCOPE_DB) cho tất cả các dự án khác nhau của tôi, cho phép tôi chuyển đổi giữa chúng với lệnh đơn giản 'source projectA' của .
Bạn có thể tạo cscpoe.files bạn sử dụng đường dẫn tuyệt đối đến tập tin của bạn, đây là kịch bản của tôi để tạo ra cơ sở dữ liệu cscope tôi
#!/bin/sh
find $PWD -name '*.[ch]' -exec echo \"{}\" \; | sort -u > cscope.files
cscope -bvq
cscope.files Sau đó chỉ cần vim và có thể: cs thêm cscope.out , mặc dù plugin cscope của tôi thực hiện điều đó một cách tự động. Sau đó, tôi tìm kiếm các tập tin tôi quan tâm và nhảy đến chúng với gf.
Bạn có thể yêu cầu vim diễn giải đường dẫn trong cscope.ra tương đối đến vị trí của tệp cscope.out bằng cách đặt tùy chọn cscoperelative
. Từ :help csre
:
Nếu 'cscoperelative' được thiết lập, sau đó trong sự vắng mặt của một tiền tố cho cscope (tiền tố là lập luận của -P tùy chọn cscope), basename của vị trí cscope.out (thường là thư mục gốc của dự án) sẽ được sử dụng làm tiền tố để tạo đường dẫn tuyệt đối. Mặc định là tắt. Lưu ý: Tùy chọn này chỉ có hiệu lực khi cscope (cscopeprg) được khởi tạo mà không có đường dẫn tiền tố (-P).
Ví dụ
: set csre
: set nocsre
Điều này thực sự là câu trả lời được chấp nhận từ góc nhìn vim + cscope là giải pháp dễ nhất. Cảm ơn bạn vì câu trả lời! – janjust
Lưu ý: vì tôi không đủ cao cấp để thêm ý kiến nào: Aaron và Neha của câu trả lời là hữu ích với tôi để tìm hiểu thêm về toàn bộ hệ thống, nhưng câu trả lời tốt nhất và trực tiếp nhất cho câu hỏi hiện đang ở vị trí thứ 3 và là của Shayan.
Người hỏi đã hỏi thêm về cách nhận tên đường dẫn tuyệt đối bằng cscope, không làm việc xung quanh nó bằng cách sử dụng vim (rất có khả năng và mạnh mẽ).
Note2: Có một cách khác để thực hiện một thay đổi duy nhất trong vim và thực hiện giống như những gì Neha đã làm.
:set cscopeprg=cscope -P path_to_relative_base
Tôi thích Neha tốt hơn, nhưng cách này gần gũi hơn với việc sửa đổi cscope thay vì cài đặt vim, nếu đây là những gì bạn muốn. Và đây là cách duy nhất cho phép bạn di chuyển db cscope đến bất cứ đâu.
- 1. Sử dụng biến classpath Eclipse để thay thế đường dẫn "đường dẫn nguồn" tuyệt đối?
- 2. Làm thế nào để sử dụng cscope với đường dẫn có chứa không gian
- 3. Làm thế nào để chuyển đổi đường dẫn tương đối thành đường dẫn tuyệt đối trong ứng dụng Windows?
- 4. Nhận đường dẫn tuyệt đối của tệp
- 5. sử dụng đường dẫn tuyệt đối hoặc tương đối?
- 6. Đường dẫn tuyệt đối PHP trong requireonce
- 7. Sử dụng đường dẫn tuyệt đối trong thăm dò privatePath
- 8. Đường dẫn tuyệt đối trong tệp thuộc tính Ant
- 9. Đường dẫn tệp tuyệt đối cho tập lệnh java
- 10. Đường dẫn tệp tuyệt đối đến URL tương đối
- 11. Trong một makefile, làm thế nào để có được đường dẫn tương đối từ một đường dẫn tuyệt đối khác?
- 12. Đường dẫn tuyệt đối và tương đối
- 13. Làm cách nào để tìm đường dẫn tuyệt đối cho ứng dụng khung chơi?
- 14. Làm cách nào để lấy đường dẫn tuyệt đối của tệp đầu vào trong R
- 15. Đường dẫn tuyệt đối Asp.Net của URL
- 16. WIN32_FIND_DATA - Lấy đường dẫn tuyệt đối
- 17. Symfony2/Twig: Tạo đường dẫn URL thay thế tuyệt đối để sử dụng với CDN?
- 18. Làm thế nào để xây dựng một đường dẫn tuyệt đối di động trong Ruby?
- 19. Làm thế nào để có được một đường dẫn tệp sạch tuyệt đối trong Java bất kể hệ điều hành?
- 20. Nhận đường dẫn tuyệt đối của tệp trên nội dung
- 21. đường dẫn tuyệt đối tương đối perl
- 22. Làm thế nào để có đường dẫn tuyệt đối cho bảng định kiểu trong thư với đường ống nội dung?
- 23. Cách lấy đường dẫn tuyệt đối của tệp bằng tkFileDialog?
- 24. python/zip: Cách loại bỏ đường dẫn tuyệt đối trong kho lưu trữ zip nếu đường dẫn tuyệt đối cho tệp được cung cấp?
- 25. Excel: chỉ có thể mở tệp nếu sử dụng đường dẫn tuyệt đối, tại sao?
- 26. Mở tệp bằng fopen, đường dẫn tuyệt đối trên Windows
- 27. Cách lấy đường dẫn tệp tuyệt đối bằng Python
- 28. Đường dẫn tương đối đến đường dẫn tuyệt đối trong VB.NET
- 29. Cách lấy đường dẫn tệp tuyệt đối từ đường dẫn cơ sở và đối tượng chứa ".."?
- 30. Mojolicious url_for: đường dẫn tuyệt đối
cũng chạy 'xuất CSCOPE_DB = $ (pwd)/cscope.out' trên cùng một thư mục mà tập lệnh chạy – Paschalis