Sử dụng Emacs làm IDE C / C ++ đầy đủ tính năng


50

Tôi đã cố gắng hơn một năm nay để sử dụng Emacs làm IDE C / C ++. Tôi chỉ thành công ngoài lề cho đến nay, nhưng đã chạy vào một vài bức tường gạch trên đường đi. Hiện tại tôi đang cố gắng sử dụng CEDET, nhưng tôi đang có một thời gian khó hiểu làm thế nào để sử dụng nó một cách hiệu quả.

Các tính năng mà tôi đang tìm kiếm trong một IDE như sau:

  1. Quản lý "dự án" phần mềm. Tôi muốn IDE của tôi có ý thức về tất cả các tệp tạo nên dự án hiện tại của tôi để tôi có thể thực hiện các chức năng như tìm kiếm và thay thế trong dự án của mình. (Sẽ thật tuyệt nếu tôi cũng có thể đạt được điều này mà không cần xả rác cây nguồn của mình với nhiều tệp hỗ trợ. Tại sao tôi cần nhiều hơn một tệp dự án tập trung cho mỗi dự án?)
  2. Khả năng xây dựng dự án hiện tại từ bên trong IDE, bất kể tôi đang truy cập bộ đệm nào. Tôi cần có khả năng ràng buộc một khóa sẽ xây dựng dự án hiện tại.
  3. Báo cáo lỗi. Tôi không muốn phải đọc hơn 500 dòng đầu ra để tìm các lỗi được báo cáo bởi các công cụ xây dựng. Tốt hơn là, các lỗi hiển thị trong bộ đệm rất riêng của họ với một dòng trên mỗi lỗi.
  4. Nhận thức về các biểu tượng trong dự án và nơi chúng được xác định. Tôi muốn chuyển đến một định nghĩa biểu tượng cho dù nó sống trong các tệp dự án của tôi hoặc trong hệ thống bao gồm các tệp.
  5. Gỡ lỗi trực quan. Tôi muốn có một danh sách theo dõi các biến cục bộ tự động cập nhật khi tôi bước qua mã. Tôi muốn có thể đặt các điểm dừng trong mã để xem dòng mã nào sẽ được thực thi tiếp theo.

Tôi biết rằng mỗi tính năng này tồn tại bởi vì tôi đã có từng tính năng này hoạt động lúc này hay lúc khác bằng EDE, Semantic, GDB, v.v. Vấn đề là tôi chưa bao giờ có thể có tất cả các tính năng này hoạt động cùng một lúc , bởi vì mỗi phần thường phải được cấu hình bởi chính nó và thường là quá nhiều công việc để tìm ra cách cấu hình tất cả chúng cùng một lúc và làm cho chúng hoạt động cùng nhau.

Những giải pháp nào tồn tại để biến Emacs thành IDE C / C ++ đầy đủ tính năng? Bạn luôn phải định cấu hình mọi thứ từng phần, hoặc có cách nào để thiết lập tất cả các tính năng tại một thời điểm không?

EDIT: Một câu trả lời tốt cho câu hỏi này không nhất thiết phải đáp ứng chính xác cả năm tiêu chí đã cho. Tôi chỉ đơn giản cung cấp danh sách để đưa ra ý tưởng cụ thể hơn về loại tính năng tôi muốn xem trước khi tôi coi IDE là "đầy đủ tính năng". Hoàn toàn có khả năng CEDET có thể phù hợp với dự luật, nhưng tôi vẫn chưa tìm thấy hướng dẫn từng bước làm việc về cách thiết lập nó từ đầu.


6
Câu hỏi này có thể tốt hơn nên chia thành nhiều. Cuối cùng, bạn có thể có một loạt các câu trả lời một phần, trong đó không có mục nào được chú ý.
Malabarba

2
Ngoài ra, mục 1 có thể là bản sao của emacs.stackexchange.com/questions/448/iêu
Malabarba

6
@Malabarba: Nếu tôi hỏi năm câu hỏi riêng biệt thì đó có thể là một bản sao. Toàn bộ vấn đề của câu hỏi này là có thể có năm gói khác nhau đạt được năm mục tiêu khác nhau, nhưng việc cấu hình cả năm để chơi tốt với nhau dường như là không thể. Nếu câu trả lời trở lại là "Emacs không thể hoạt động như một IDE đầy đủ tính năng vì phải mất một lượng thời gian không thể định cấu hình." chấp nhận vậy đi.
nispio

4
Mỗi điểm có thể là câu hỏi của riêng nó (có khả năng trùng lặp), đặt tất cả chúng vào một câu hỏi đôi khi có thể dẫn đến các câu trả lời khác nhau do tương tác gói.
Jonathan Leech-Pepin

Câu trả lời:


27

Các cấp độ khác nhau của "IDE-ness" tồn tại cho các ngôn ngữ khác nhau và thật không may, bạn sẽ không bao giờ có được các tính năng IDE đầy đủ mà không có cấu hình (nếu bạn không muốn định cấu hình mọi thứ, có lẽ bạn không nên sử dụng Emacs). CEDET đặt mục tiêu trở thành một giải pháp hoàn chỉnh đáp ứng mọi nhu cầu của bạn về các ngôn ngữ được hỗ trợ, nhưng cá nhân tôi chưa bao giờ làm cho nó hoạt động bình thường; thay vào đó, tôi sử dụng một vài gói song song để trang trải các cơ sở IDE của mình. Tôi sẽ xem xét điểm của bạn theo thứ tự, với một số giải pháp cho các ngôn ngữ khác nhau mà tôi biết:

  1. projectile là gói gần nhất để cung cấp trải nghiệm giống như IDE thực sự. Nó cung cấp rất nhiều chức năng hữu ích trên cơ sở từng dự án. Bạn cũng có thể sẽ muốn một số loại quản lý cửa sổ / không gian làm việc; Tôi sử dụng giải pháp của riêng mình được gọi là wacspace , nhưng các giải pháp tốt khác bao gồm phối cảnh , nhóm làm việcmàn hình .
  2. Các ngôn ngữ khác nhau có ý tưởng khác nhau về "bản dựng" là gì, nhưng M-x compilecó thể chứa khá nhiều thứ và làm cho việc phân trang trở nên dễ dàng (chỉ cần sử dụng next-error). Bạn có thể dễ dàng tùy chỉnh trên cơ sở từng dự án bằng cách sử dụng các biến thư mục để đặt compile-command. Bạn có thể chạy compilevới đạn bằng cách sử dụng projectile-compile-project( C-c p c).
  3. M-x compilecũng có bạn đề cập ở đây - lỗi thường kết thúc một dòng trên mỗi *compilation*bộ đệm, với phân trang dễ dàng với next-error.
  4. Nhảy tới một biểu tượng liên quan đến "hiểu mã của bạn" và đây là nơi hỗ trợ thay đổi rất lớn giữa các ngôn ngữ. Đối với Elisp, bạn có thể sử dụng elisp-slime-nav tuyệt vời , và sau đó M-.chuyển sang định nghĩa. Dưới đây là một số gói cung cấp hỗ trợ tương tự cho các ngôn ngữ khác: CIDER (cho Clojure); SLIME (đối với Lisp thông thường); áo choàng (cho Ruby); thẻ ngữ nghĩa hoặc clang cho C / C ++ (từ chối trách nhiệm: Tôi cũng chưa bao giờ sử dụng, vì vậy tôi không biết liệu chúng có hoạt động tốt không). Nếu vẫn thất bại, bạn cũng có thể sử dụng các tiện ích TAGS tích hợp của Emacs bằng cách sử dụng thứ gì đó như ctags quá mức , nhưng tôi chưa bao giờ có bất kỳ nơi nào có kết quả chấp nhận được với TAGS.
  5. Emacs có sự hỗ trợ rất rải rác cho các trình sửa lỗi. GDB với GUD là đặt cược tốt nhất của bạn cho các ngôn ngữ giống như C; mặt khác, nó hoàn toàn dựa trên cơ sở mỗi ngôn ngữ. (Tôi không nghĩ gỡ lỗi bằng ngôn ngữ chéo thực sự là một mục tiêu thực tế.)

4
Là một nút bên projectilecó thể tích hợp trực tiếp với perspectiveviệc tạo perspective-per-projecttự động trên chuyển đổi dự án.
Jonathan Leech-Pepin

Tôi sẽ thêm ghi chú về semantic# 4, semantic là một gói tuyệt vời, nó hiểu mã của bạn và có thể làm rất nhiều điều hữu ích với thông tin đó.
Jordon Biondo

Tôi chưa bao giờ thực sự sử dụng semanticvà tôi nghĩ rằng tôi nhớ rằng nó có hỗ trợ C ++ chưa hoàn chỉnh, nhưng tôi đã thêm nó vào câu trả lời.
shosti

15

Tôi đã sử dụng hướng dẫn này để bắt đầu sử dụng Emacs như một C ++ IDE. Nó giới thiệu HelmProjectile giúp trả lời một số câu hỏi của bạn. Để dí dỏm

  1. Projectile quản lý các dự án. Nó tìm kiếm cây thư mục cho Makefile, SConstruct, Git repo, SVN repo và có lẽ một số tệp kiểm soát phiên bản hoặc hệ thống xây dựng khác để tự động tìm hiểu các tệp được liên kết với dự án hiện tại. Ví dụ, C-c p hchạy helm-projectilesử dụng Helm để tìm tệp trong dự án hiện tại.

  2. Projectile có thể xây dựng các dự án của bạn. C-c p cchạy projectile-compile-projectmà cố gắng chạy Make / SCons / CMake dựa trên các tệp có sẵn. Tôi chưa bao giờ phải cấu hình này; nó luôn biết phải làm gì

  3. Các lỗi hiển thị trong bộ đệm riêng của chúng khi bạn chạy projectile-compile-projectnhưng tôi không chắc nó có đẹp như bạn muốn không.

  4. Bạn có thể sử dụng gói helm-gtagsgiao diện với gtagschương trình (mà bạn nên có sẵn trên hệ thống của mình). Lưu ý rằng gtags là một dự án GNU và do đó không có khả năng hoạt động ngay lập tức trên Windows.

    Sau khi được cấu hình, Helm nhận biết các ký hiệu trong dự án và có thể điều hướng đến các định nghĩa và sử dụng các vị trí. Ví dụ: helm-gtags-dwimcó thể chuyển sang bất kỳ việc sử dụng biến hoặc hàm nào và khi chạy trên tệp tiêu đề sẽ mở tệp tiêu đề đó.

  5. Tôi chưa thử cái này.

Hướng dẫn được liệt kê cung cấp thông tin cấu hình rất rõ ràng về cách bắt đầu.


Tôi cũng vấp phải hướng dẫn đó, và áp dụng nó. IMHO bằng cách nào đó nặng nề và thay đổi rất nhiều tương tác emacs cơ bản quá nhiều. Tôi đã vô hiệu hóa một số cấu hình liên quan đến helm vì chúng đã can thiệp vào các phím tắt thông thường (như dễ dàng mở thư mục hiện tại trong bộ đệm hoặc mở tệp trong thư mục con phụ bằng một vài lần nhấn phím). Đáng xem, mặc dù, nhưng có lẽ nên được thử từng bước, không phải là toàn bộ.
Stéphane Gourichon

9

Vì bây giờ bạn đang yêu cầu IDE C / C ++ đầy đủ tính năng, tôi có thể đủ điều kiện.

Tôi đã sử dụng tất cả các MS IDE từ vc4 đến Visual Studio 2010, vì vậy tôi hoàn toàn hiểu những gì bạn muốn.

Tin tốt là Emacs có thể tốt hơn 95% so với Visual Studio, và nó có thể làm được nhiều hơn thế. nhưng bạn có thể không quan tâm đến phần "thêm". Vì vậy, tôi sẽ chỉ tập trung vào câu hỏi của bạn.

Bây giờ là điểm mấu chốt, bạn PHẢI SỬ DỤNG CMake , ngay cả ứng dụng C ++ của bạn chỉ dành cho windows! Kết thúc câu chuyện. Không có lựa chọn nào khác, tôi biết những gì tôi đang nói về. Nếu bạn không sử dụng CMake, thì việc tiếp tục là vô nghĩa.

Trả lời cho câu hỏi 1 : Bạn không cần thiết lập bất cứ điều gì, hãy cài đặt cpputils-cmake ( https://github.com/redguardtoo/cpputils-cmake ) để thiết lập các plugin khác. Nó thậm chí còn tiện lợi hơn Visual Studio. Vì vậy, mỗi thiết lập dự án là không cần thiết. Để tìm kiếm thứ thay thế, tôi kết hợp sức mạnh của bash / perl / git và percol ( https://github.com/mooz/percol ), tốt hơn bất kỳ IDE nào. kiểm tra blog của tôi ( http://blog.binchen.org/c chuyên / emacs.html ) và của tôi ~ / .bashrc ( https://gist.github.com/redguardtoo/01868d7a13817c9845e8#file-bashrc ). Ví dụ: tôi có thể tìm kiếm thay thế các tệp trong một số cam kết nhất định.

Trả lời cho câu hỏi 2 : Nó đã được thiết lập bởi cpputils-cmake, bạn chỉ cần M-x compilenhư bình thường.

Trả lời cho câu hỏi 3 : giống như câu hỏi 2. Tôi không biết tại sao đây là vấn đề. đó chính xác là hành vi tương tự như VS, với các ràng buộc khóa tốt hơn.

Trả lời cho câu hỏi 4 : Bây giờ hầu hết mọi người chỉ sử dụng Gnu Global có thể được kết hợp với cpputils-cmake. Tôi hiểu vấn đề thực sự là tự động phát hiện các thư mục chứa tất cả các tiêu đề C ++ đi kèm . Điều đó có thể được thực hiện với cpputils-cmake, mọi thứ khác đều dễ dàng. Vui lòng trình bày man globalvà đọc hướng dẫn về biến môi trường GTAGSLIBPATH. Có nhiều plugin để cung cấp UX đẹp dựa trên Toàn cầu để điều hướng mã, tôi khuyên bạn nên ggtags.el

Trả lời cho câu hỏi 5 : Gỡ lỗi trực quan, Nhiều người khuyên dùng M-x gdb-many-window, tôi đã thử nhưng không được. Đơn giản là vì phiên bản gdb của tôi đã lỗi thời (Gợi ý, tôi đang sử dụng OSX 10.7.3) và tôi quá lười để nâng cấp hệ điều hành của mình. Nhưng GUD vẫn ổn. Tôi tạo một số phím ngắn để in biến cho tôi trong cửa sổ soạn thảo. tất cả các công cụ gỡ lỗi là có thể sử dụng. Nó không có bố trí UX bảng như VS. nhưng thành thật với bạn Trình gỡ lỗi UX của Microsoft cũng không phải là tốt nhất trên thế giới. Trình gỡ lỗi thân thiện với người dùng tốt nhất là DDD ( http://www.gnu.org/software/ddd/). Gud và VS đều hút vấn đề này. Ngày nay tôi chỉ cần chèn mã đăng nhập với yasnippet, một plugin Emacs khác. Để làm rõ, tôi biết tất cả các thủ thuật nâng cao về điểm dừng, chỉ vì tôi quá lười để áp dụng các thủ thuật này. Chèn mã đăng nhập trong Emacs dễ dàng hơn nhiều.

Còn nhiều điều nữa về IDE: hoàn thành mã? sử dụng chế độ công ty, không cần thiết lập. kiểm tra cú pháp thời gian thực? sử dụng cpputils-cmake, sau đó(flymake-mode 1)

Điều tốt nhất là, bạn cần thực hiện ít thiết lập hơn VS nếu bạn sử dụng thiết lập của tôi tại ( https://github.com/redguardtoo/emacs.d ) Thiết lập đó có tiêu đề "cấu hình emacs của purcell và hỗ trợ C / C ++" .

Bây giờ có một cái gì đó tôi cần nhấn mạnh, Emacs cung cấp cho bạn sự tự do hoàn toàn . Bạn có thể chọn bất kỳ cách nào để bắt đầu. cách khó hay cách dễ.

Cách dễ dàng là chỉ cần sao chép thiết lập của tôi (hoặc thiết lập của bất kỳ ai trên github, đếm số sao lúc đầu), trong 5 phút bạn sẽ có C ++ IDE đầy đủ chức năng. VS đã không hoàn thành khởi động trong 5 phút đó.

Cách khó là điều chỉnh thiết lập từ đầu. Nếu bạn chọn cách khó, thì đừng phàn nàn Emacs . Đó là lựa chọn của bạn.

BTW, về lâu dài, một chút kiến ​​thức Emacs Lisp có thể hữu ích. Tôi nghĩ thật tầm thường đối với một nhà phát triển C ++ chuyên nghiệp so với thời gian tôi lãng phí trên MS sh * t. Nhiều năm trước MS đã âm thầm nâng cấp thời gian chạy VC của họ trong một số cập nhật Windows. Nó làm cho sản phẩm của tôi chạy tốt trên máy của công ty nhưng bị sập trên máy tính của khách hàng .

Sau sự cố đó, tôi bắt đầu hiểu Richard Stallman.


1
Hấp dẫn. "bạn PHẢI SỬ DỤNG CMake" -> Vì vậy, bạn đang nói rằng khi làm việc trên gói phần mềm miễn phí ngẫu nhiên sử dụng autoconf hoặc tập lệnh cá nhân, bạn nên viết một trình bao bọc CMakeLists.txt?
Stéphane Gourichon

1
Bạn có thể sử dụng GNU Global thay thế, không hoàn hảo như giải pháp cmake. Nhưng linh hoạt hơn, xem blog.binchen.org/posts/emacs-as-c-ide-easy-way.html
chen bin

5

Đối với # 4, tôi đặc biệt khuyên bạn nên sử dụng các thẻ quảng cáo và hỗ trợ thẻ tích hợp, mà tôi đã sử dụng trong nhiều năm. Ngoài ra, gần đây tôi đã chuyển sang sử dụng gói GNU Global và gói ggtags và thấy chúng hơi vượt trội; Mặc dù, chúng hoạt động gần như giống hệt nhau. Cả hai đều hoạt động với gần như không có cấu hình. Đối với các tính năng IDE khác, tôi cũng thích gói tự động hoàn thành. Tương tự như vậy, tôi sử dụng M-x compilerộng rãi và liên kết các khóa toàn cầu với lỗi tiếp theo và trước đó. Để tìm kiếm trong "dự án", tôi thường chỉ sử dụng M-x find-grep. Lưu ý rằng nó sẽ sử dụng các ràng buộc chính tương tự cho lỗi tiếp theo và trước đó.


4

Quản lý "dự án" phần mềm. Tôi muốn IDE của tôi có ý thức về tất cả các tệp tạo nên dự án hiện tại của tôi để tôi có thể thực hiện các chức năng như tìm kiếm và thay thế trong dự án của mình. (Sẽ thật tuyệt nếu tôi cũng có thể đạt được điều này mà không cần xả rác cây nguồn của mình với nhiều tệp hỗ trợ. Tại sao tôi cần nhiều hơn một tệp dự án tập trung cho mỗi dự án?)

Projectile dường như là lựa chọn tốt nhất để quản lý dự án trong emacs. Nó rất nhẹ, bạn không cần thêm bất kỳ tệp nào vào dự án của mình. Nó sẽ cố gắng tự động phát hiện các dự án cho bạn dựa trên sự hiện diện của một số tệp đặc biệt. Ví dụ: nếu bạn đang làm việc trong git repo, projectile sẽ coi nó như một dự án (mọi tệp được theo dõi bởi git sẽ được coi là một phần của dự án), sau đó bạn sẽ có thể sử dụng các lệnh như projectile-find-fileđể mở bất kỳ tệp nào của dự án. Nó có một loạt các lệnh khác hoạt động trên cơ sở dự án.

Báo cáo lỗi. Tôi không muốn phải đọc hơn 500 dòng đầu ra để tìm các lỗi được báo cáo bởi các công cụ xây dựng. Tốt hơn là, các lỗi hiển thị trong bộ đệm rất riêng của họ với một dòng trên mỗi lỗi.

Flycheck có hỗ trợ kiểm tra cú pháp bằng clang / gcc.

Nhận thức về các biểu tượng trong dự án và nơi chúng được xác định. Tôi muốn chuyển đến một định nghĩa biểu tượng cho dù nó sống trong các tệp dự án của tôi hoặc trong hệ thống bao gồm các tệp

Tôi muốn giới thiệu bạn hãy xem rtags . Nó sử dụng tiếng kêu như một phụ trợ và một công việc khá tốt để nhảy đến định nghĩa và hoàn thành. Nó cũng có thể giúp bạn với # 3 vì nó cũng tích hợp với flymake để hiển thị lỗi và cảnh báo bằng cách sử dụng tiếng kêu. Bên cạnh đó nó có một số hỗ trợ hạn chế cho tái cấu trúc. Một tùy chọn khác để hoàn thành tự động thông minh là chế độ trớ trêu


2

Phiên bản CEDET hiện được cung cấp cùng với Emacs rất khó thiết lập, nhưng phiên bản bạn có thể truy cập trên trang web chính thức thì dễ cài đặt hơn và có thể đáp ứng nhu cầu số 2 và 4 của bạn.

EDE của CEDET cho phép bạn quản lý các dự án makefile và tự động hóa, ví dụ như thêm các mục tiêu vào nó và liên kết các tệp với các mục tiêu. Sau đó, bạn có thể biên dịch dự án của mình bằng các lệnh EDE. Vì nó sử dụng chế độ biên dịch tích hợp sẵn của Emacs, nên nhu cầu số 3 của bạn cũng được thỏa mãn.

Semantic của CEDET có các trình phân tích cú pháp cho một số ngôn ngữ, bao gồm cả C ++. Nó có thể truy xuất các thẻ được xác định trong một tệp, như exuberant-ctags và GNU Global, nhưng nó cũng có các tính năng tự động hoàn thành và nhảy chính xác. Nếu bạn có hai phương pháp gọi là "foo", bước nhảy của Semantic đủ thông minh để đưa bạn đến phương thức đúng.

Đối với # 1, cá nhân tôi sử dụng đạn và tôi đã sử dụng GDB cho # 5 một vài lần trước đây.

Gợi ý cho số 3: Nếu EDE quá mức cần thiết với bạn, Emacs có lệnh M-x recompilekhởi chạy lệnh biên dịch cuối cùng của bạn, vì vậy bạn có thể chạy trình biên dịch của mình lần đầu tiên, sau đó sử dụng recompiletrong bất kỳ bộ đệm nào.


1

Đối với # 4, dường như là một dự án mới có tên YouCompleteme và ứng dụng khách Emacs tương ứng dường như là điều thú vị tiếp theo. Bởi vì nó sử dụng tiếng kêu, nó có một cái nhìn mã tốt hơn các thẻ hoặc toàn cầu.


1
Cảm ơn lời đề nghị, nhưng vì tôi đang tìm kiếm những thứ tích hợp tốt với nhau nên tôi không chắc rằng việc cố gắng có được một trong các tính năng bằng cách sử dụng plugin Vim với ứng dụng khách Emacs nguyên mẫu là điểm khởi đầu tốt nhất.
nispio

3
Thay vào đó, hãy thử github.com/abingham/emacs-ycmd cho ứng dụng khách emacs (lưu ý rằng nó sử dụng github.com/Valloric/ycmd , không phải github.com/Valloric/YouCompleteMe ). Nó hoạt động với chế độ công ty (được đề xuất bởi các câu trả lời khác ở đây) vì vậy nó tích hợp tốt với phần còn lại của Emacs. Bạn có thể cài đặt ycmd và company-ycmd từ MELPA ( spunge.us/LXGY là cấu hình của tôi); và làm theo hướng dẫn xây dựng cho ycmd. Thử thách duy nhất là bạn cần đặt các cờ biên dịch của mình vào một tệp như github.com/Valloric/ycmd/blob/master/examples/
Lỗi

1

Tôi đã hài lòng với CEDET từ repo nguồn + ECB + gtags + cscope. Điều đó nói rằng, có nhiều gợi ý về bài đăng này mà tôi sẽ cố gắng.


1
Bạn có thể giải thích về những gì bạn phải làm để làm cho tất cả các công cụ đó hoạt động cùng nhau không?
nispio

4
Ngay bây giờ điều này gần như trông giống như một bình luận thất lạc. :-) Nếu bạn sẽ làm điều tử tế, xin vui lòng giải thích một chút.
Malabarba

Xin lỗi về việc ngắn gọn. Ứng dụng StackExchange lấy vòm làm quen. Giải pháp này trả lời # 4, liên quan đến điều hướng biểu tượng và phân tích nguồn. CEDET, tất nhiên, chứa ngữ nghĩa. ECB là Trình duyệt mã Emacs và sử dụng CEDET để liệt kê các phương thức và thông tin biểu tượng báo cáo. Cả Gtags và Cscope đều xây dựng các bảng thông tin biểu tượng từ cơ sở nguồn (helm cũng thực hiện điều này) và tích hợp với Emacs để cho phép điều hướng bằng thẻ hoặc biểu tượng.
Clay Haapala

1

Như đã đề cập ở phần trên, đạn (tùy chọn có helm) là một giải pháp tuyệt vời để quản lý dự án.

Ycmd rất tốt cho việc hoàn thành mã và một số điều hướng, và ứng dụng khách tốt nhất cho nó là emacs-ycmd (tiết lộ đầy đủ: Tôi đã viết ứng dụng khách emacs.)

Đối với "thẻ" và lập chỉ mục, các giải pháp tổng thể tốt nhất mà tôi đã tìm thấy là kiếm mã (tiết lộ nhiều hơn nữa: tôi đã viết thế này, quá.) Đó là khá ngớ ngẩn ở chỗ nó thực sự chỉ là không tìm kiếm regex, nhưng đó là tốc độ nhanh và thường tất cả các bạn cần và nó hoạt động tốt trên nhiều ngôn ngữ.

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.